0
点赞
收藏
分享

微信扫一扫

GatewayWorker使用说明,反正我能看懂,你们加油


第一步 下载 GatewayWorker

​​https://www.workerman.net/download​​

第二步 把GatewayWorker放在项目目录下

启动的时候可能遇见各种报错,原因是:php的扩展或者禁用函数,还有端口号的问题
目录结构
├── Applications // 这里是所有开发者应用项目
│ └── YourApp // 其中一个项目目录,目录名可以自定义
│ ├── Events.php // 开发者只需要关注这个文件
│ ├── start_gateway.php // gateway进程启动脚本,包括端口号等设置
│ ├── start_businessworker.php // businessWorker进程启动脚本
│ └── start_register.php // 注册服务启动脚本

├── start.php // 全局启动脚本,此脚本会依次加载Applications/项目/start_*.php启动脚本

└── vendor // GatewayWorker框架和Workerman框架源码目录,此目录开发者不用关心

第三步 修改 Applications/YourApp/start_gateway.php下的端口和域名ip的设置

第四步 在 Applications/YourApp/Events.php创建消息发送逻辑过程

/**
* 当Worker启动时
* @param integer $client_id 客户端id
*/
public static function onWorkerStart($client_id) {
}

/**
* 有消息时
* @param int $client_id
* @param mixed $message
*/
public static function onMessage($client_id, $message)
{


}


/**
* 当客户端断开连接时
* @param integer $client_id 客户端id
*/
public static function onClose($client_id) {
}

常用函数

代码

注释

发给所有用户 向用户发送数据

sendToAll(数据);

向client_id发送数据

sendToClient(client_id, 数据);

判断是否在线

isOnline(client)

绑定系统用户id

bindUid(client_id, $req_data[‘uid’])

判断系统id是否在线

isUidOnline($uid)

解除绑定uid

unbindUid(client_id, $req_data[‘uid’])

向该uid用户发送数据

sendToUid($req_data[‘uid’], 数据);

加入组

joinGroup(client_id, 群组)

踢出组

leaveGroup(client_id, 群组);

向组内所有人发送记录

sendToGroup(群组, 数据)

如果是获取当前请求所属client_id的session,

直接使用$_SESSION变量即可。

如果想获取任意client_id的session,

可以通过Gateway::getSession($client_id)获取。

class Events
{
public static function onMessage($client_id, $data)
{
// session中没有uid,说明没用绑定uid,执行uid绑定并存储uid到session
if (!isset($_SESSION['uid'])) {
// 一般是根据$data获取uid,这里为了演示方便随机生成uid
$uid = rand(1, 10000);
// uid用session存储起来,避免重复绑定
$_SESSION['uid'] = $uid;
// 绑定uid
Gateway::bindUid($client_id, $uid);
// 通知客户端uid生成并存储成功
return Gateway::sendToClient($client_id, 'uid设置成功'.$uid);
}

// session中有uid,证明已经绑定过uid
return Gateway::sendToClient($client_id, '你的uid为'.$_SESSION['uid']);
}
}

第五步 在调用页面写逻辑语言

ws = new WebSocket("ws://your_domain.com:7272");// 服务端主动推送消息时会触发这里的onmessage前端发送数据
ws.send(字符串数据);
ws.onmessage = function(e){
// json数据转换成js对象

};


举报

相关推荐

0 条评论