workerman 无法1对多进行聊天 1对1可以实现

40029630@qq.com

你想具体做什么

程序代码

if(isset($connection->uid)) {
            print_r(111);
            $connection->uid = $data->uid;
            $this->worker->uidConnections[$connection->uid] = $connection;
        }

期待的结果及实际结果

这个isset 无法生效 就是判断这个是否已经设置 一直都是未设置

重现bug的步骤

系统环境及workerman/webman版本

1077 4 0
4个回答

2548a

技术不行直接用 GatewayWorker 就好,何必给自己找麻烦呢.

if(isset($connection->uid)) {//这里是设置了uid 才执行里面代码,问题你赋值是在里面赋值的,那怎么可能会执行到里面代码呢,执行不到不就是一直赋不了值吗

}

2548a

能不能实现看的是你php水平,而不是GatewayWorker,他已经给你封装好了单发,群发接口,而你的一对多我不太清楚你的实际需求,但你要是能用workerman实现,那肯定可以用GatewayWorker更方便的实现.
至于用workerman实现的话,你需要考虑的不仅仅是$connection->send() 发送过去就好了,除非说你就做一个单进程的简单聊天系统.不然你绕不过去多进程跟分布式部署它们之间的通讯,这对于你这种对多进程没什么概念的来说,你把它们写出来的时间足够你用GatewayWorker把项目写出来了.

  • 40029630@qq.com 2022-10-10

    大佬有具体的实例可以给我参考一下嘛

  • 2548a 2022-10-10

    GatewayWorker文档就是最好的实例. 估计没谁那么闲真的会来手把手教你的. 又不是收了你学费, 好好看看GatewayWorker文档就行了,多看多写几遍就会了.

jianqi

用gateway吧,那个省事,单聊 群聊,文字 图片 都可以实现,文档也比较齐全

不败少龙

取需要发送的uid 然后发送了 看数据里面是否有需要发送的用户

  • 暂无评论
年代过于久远,无法发表回答
×
🔝