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 协议》,转载必须注明作者和本文链接
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 2
meitesi

假装我已经看懂了代码 :joy:

4年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!