Thinkphp 使用Workerman 聊天室

Thinkphp 使用Workerman 聊天室,第1张

1、下载Workerman插件

composer require topthink/think-worker

2、示例代码 后端      2.1 下载之后会得到这俩个文件 

2.2 这个文件对应上面的worker_class 的地址 

   2.3.worker.php示例代码
send(json_encode('connect success'));
    }

    ## 接收消息,接收心跳消息 ,接收用户id 信息等等
    public function onMessage($connection,$data)
    {
        $connection->lastMessageTime = time();
        #var_dump($data);
        $connection->send(json_encode('receive success'));
    }

    /**
     * 消息回调
     * @param $worker
     * @author 冬
     * @date 2022/5/5 17:07
     */
    public function onWorkerStart($worker)
    {
        //查看是否有新的下面的3是几秒推送一次
        Timer::add(3, function () use ($worker) {

            $time_now           = time();
            var_dump(date('Y-m-d H:i:s',$time_now) );
            ## 推送的数据
            $infoObj =  IndexModel::getTips();

            $infoArr = json_decode(json_encode($infoObj),true);

            if (true) {

                foreach ($worker->connections as $connection) {
                    if (empty($connection->lastMessageTime)) {
                        $connection->lastMessageTime = $time_now;
                    }

                    var_dump(date('Y-m-d H:i:s',$connection->lastMessageTime) );
                    if ($time_now - $connection->lastMessageTime > self::$heartbeat_time) {
                        $connection->close();
                    }

                    $connection->send(json_encode($infoArr));
                }

            } else {
                var_dump(22);
                foreach ($worker->connections as $connection) {
                    if (empty($connection->lastMessageTime)) {
                        $connection->lastMessageTime = $time_now;
                        continue;
                    }

                    if ($time_now - $connection->lastMessageTime > self::$heartbeat_time) {      //连接超时
                        $connection->close();
                    }
                }
            }
        });
    }

    public function onClose($connection){
        var_dump('close');
    }



}
     2.4 前端示例代码

3、开启服务 php think worker:server

4、打开前端页面查看是否链接成功

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/941498.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-17
下一篇2022-05-17

发表评论

登录后才能评论

评论列表(0条)

    保存