swoole 用户下单及时通知
swoole 及时通知
1 需要的环境
1 首先你必须要装下php redis swoole 的扩展
2 服务器安装下redis 服务器
3 保证服务器和外网ping通
2 需要在开启一个swoole服务 下面是代码段
1开启一个服务 很简单
$this->server = new swoole_websocket_server("0.0.0.0", env('SWOOLE_PORT'));
$this->server->set(array(
'task_worker_num' => 1,//task进程数量
'dispatch_mode' => 2,
'debug_mode' => 1,
'daemonize' => false,//是否守护进程
'log_file' => storage_path('logs/webs_swoole.log'),
));
3 用redis准备好数据集 比方某某在同一个房间 或者同一个组别
1 比方我们在redis创建了2个房间吧:用list数据结构 agent房间和provider房间
2 模拟用户登录房间的时候 要记录以下数据
2.1 模拟数据有2个参数 一个cmd 命令(你需要执行的命令) 一个datas 你要传输的数据
'{"cmd":"login","datas":{"uid":"' + user_id + '"}}';
3 服务器接收到消息后根据业务逻辑判断
3.1
/**
* 服务端收到消息
*/
$this->server->on('message', function ($ser, $frame) {
$this->doWork($frame);
});
3.2
$data = json_decode($frame->data, true);
if (empty($data['cmd']) || empty($data['datas'])) {
return;
}
$cmd = $data['cmd'];
$data = $data['datas'];
switch ($cmd) {
case 'login':
$this->redis->set($this->_getSysFdKey($frame->fd), $data['uid']);//这边记录登陆的账号
$this->redis->lPush($this->_getLoginKey($data['uid']), $frame->fd);//这边记录所在
$this->redis->lPush($this->_getLoginIdentityKeys($data['uid']), $frame->fd);
break;
case 'case_status':
$this->doCaseStatus($frame, $data);
break;
}
本作品采用《CC 协议》,转载必须注明作者和本文链接
推荐文章: