php后端配合socket.io,GitHub - vleij/bfw_socketio: bfw_socketio 是一个基于开源 异步PHP socket框架 Workerman, 进一步封装 开...

介绍

bfw_socketio 是一个基于开源 异步PHP socket框架 Workerman, 进一步封装 开发者只需简单调用暴露接口即可进行socket数据传输

安装

请使用composer安装bfw_socketio。

脚本中引用vendor中的autoload.php实现bfw_socketio相关类的加载。例如

require_once '/你的vendor路径/autoload.php';

配置文件

bfw_socketio\src\deploy\socketio.php

/**

* Created by PhpStorm.

* User: Administrator

* Date: 2020/9/3

* Time: 13:51

*/

return [

//SocketIO 进程端口

"SocketIO_port"=>"9120",

//监听一个http端口,通过http协议访问这个端口可以向所有客户端推送数据(url类似http://ip:9191?msg=xxxx)

"http"=>'0.0.0.0:9191',

//限制连接域名 当我们想指定特定域名的页面才能连接,可以用来设置域名白名单。(多域名用逗号分隔)

"origins"=>[''],

"https" => [

//证书的绝对路径 .pem

'local_cert' => '',

//密匙绝对的路径 .key

'local_pk' => '',

//域名验证

'verify_peer' => false,

],

//客户端连接url

'client_link'=>'127.0.0.1:9191',

];

服务端和客户端连接

启动一个SocketIO服务端

进入bfw_socketio\src目录启动

cd bfw_socketio\src

php start.php start 用于调试模式

php start.php start -d 用于守护程序模式

客户端

// 如果服务端不在本机,请把127.0.0.1改成服务端ip

var socket = io('http://127.0.0.1:9120');

socket.on('connect', function(){

//登入事件

socket.emit('login', uid, to);

});

// 启动定时器时触发事件

socket.on('timer_msg', function(msg){

console.log('收到消息:'+msg)

});

// 销毁定时器定时触发事件

socket.on('close_timer_msg', function(msg){

console.log('收到消息:'+msg)

});

//后端推送消息时

socket.on('message', function(msg){

console.log('收到消息:'+msg)

});

// 后端推送来在线数据时

socket.on('update_online_count', function(online_stat){

$('#online_box').html("当前"+online_stat.online_count+"人在线,共打开"+online_stat.online_page+"个页面");

});

push.php 核心接口

1.publish

array \DataPush\Push::publish(array $data, int $uid)

参数

data

服务端推送给客户端的数据。

uid

客户端id,用于指定客户端推送

返回值

返回一个数组数据

array(3) {

["status"]=>

int(0)

["message"]=>

string(6) "成功"

["result"]=>

array(0) {

}

}

示例

require_once __DIR__ . '/vendor/autoload.php';

use DataPush\Push;

class Index{

public function res()

{

$push = new Push();

$res = $push::publish(['name'=>'leijia'],$uid);

}

}

$res = new Index();

$res->res();

2.group_push

array \DataPush\Push::group_push(array $data, int $to)

参数

data

服务端推送给客户端的数据。

to

客户端分组id,用于指定客户端组别推送

返回值

返回一个数组数据

array(3) {

["status"]=>

int(0)

["message"]=>

string(6) "成功"

["result"]=>

array(0) {

}

}

示例

require_once __DIR__ . '/vendor/autoload.php';

use DataPush\Push;

class Index{

public function res()

{

$push = new Push();

$res = $push::group_push(['name'=>'leijia'],$to);

}

}

$res = new Index();

$res->res();

3.broadcast

数据推送给在线的所有客服端连接(广播)

array \DataPush\Push::broadcast(array $data)

参数

data

服务端推送给客户端的数据。

返回值

返回一个数组数据

array(3) {

["status"]=>

int(0)

["message"]=>

string(6) "成功"

["result"]=>

array(0) {

}

}

示例

require_once __DIR__ . '/vendor/autoload.php';

use DataPush\Push;

class Index{

public function res()

{

$push = new Push();

$res = $push::broadcast(['name'=>'leijia']);

}

}

$res = new Index();

$res->res();

4.timer_push

定时器推送

int \DataPush\Push::timer_push(int $time, array $data, bool $persistent)

参数

time

多长时间执行一次,单位秒,支持小数,可以精确到0.001,即精确到毫秒级别。

data

服务端推送给客户端的数据。

persistent

是否是持久的,如果只想定时执行一次,则传递false(只执行一次的任务在执行完毕后会自动销毁,不必调用Push::timer_close()`)。默认是true,即一直定时执行。

返回值

返回一个整数,代表计时器的timerid,可以通过调用Push::timer_close($timerid)销毁这个计时器。

示例

require_once __DIR__ . '/vendor/autoload.php';

use DataPush\Push;

class Index{

public function res()

{

$push = new Push();

$timerid = $push::timer_push(1,name'=>'leijia']);

}

}

$res = new Index();

$res->res();

5.timer_func

定时器执行类方法

int \DataPush\Push::timer_func(int $time, array $data, array $parameter, bool $persistent)

参数

time

多长时间执行一次,单位秒,支持小数,可以精确到0.001,即精确到毫秒级别。

data

服务端推送给客户端的数据。

parameter

函数的参数,必须为数组。

persistent

是否是持久的,如果只想定时执行一次,则传递false(只执行一次的任务在执行完毕后会自动销毁,不必调用Push::timer_close()`)。默认是true,即一直定时执行。

返回值

返回一个整数,代表计时器的timerid,可以通过调用Push::timer_close($timerid)销毁这个计时器。

实例

require_once __DIR__ . '/vendor/autoload.php';

include __DIR__ .'/vendor/bfw/socketio/src/Cs.php';

use DataPush\Push;

class Index{

public function res()

{

$push = new Push();

$timerid = $push::timer_func(1,['Cs','save_log'],['log','555']);

}

}

$res = new Index();

$res->res();

6.timer_close

销毁定时器执行类方法

array \DataPush\Push::timer_close(int $timer_id, array $data=[], int $time='0.1')

参数

timer_id

创建定时器任务id

data

销毁前服务端推送给客户端的数据。(选填)

time(选填)

销毁定时器时间

返回值

返回一个数组数据

array(3) {

["status"]=>

int(0)

["message"]=>

string(6) "false|true"

["result"]=>

array(0) {

}

}

实例

require_once __DIR__ . '/vendor/autoload.php';

include __DIR__ .'/vendor/bfw/socketio/src/Cs.php';

use DataPush\Push;

class Index{

public function res()

{

$push = new Push();

$res = $push::timer_close($timer_id);

}

}

$res = new Index();

$res->res();

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值