thinkphp websocket即时通讯

基于thinkphp框架的fastadmin,用GatewayWorker版本3.0.0

thinkphp websocket即时通讯

1、用户A和用户B在不同的地方登录,聊天正常,当用户B再其他的地方登录就不正常了。用户A发送消息,用户B无法接收到。用户B发送消息,用户A无法接收到。
2、今天测试获取用户绑定的客户端为空。

/**
     * 获取与 uid 绑定的 client_id 列表
     *
     * @param string $uid
     * @return array
     */
    public static function getUidToClientId($uid)
    {
        return GatewayClient::getClientIdByUid($uid);
    }

3、workerman.log如下图

thinkphp websocket即时通讯
4、常驻进程状态如下图

thinkphp websocket即时通讯

5、如何利用thinkphp+GatewayWorker实现用户只能在一个地方登录。或者多端登录,都可以用户双方能接收到相互发送的信息。

讨论数量: 6

加入同一个群聊。www.workerman.net/doc/gateway-work...

按UID排序然后转成字符串作为房间ID。

3个月前 评论

laravel用哪个

3个月前 评论
转打瞎比比 (楼主) 3个月前

可以看下getClientIdByUid是怎么实现的 以及存的时候是怎么存的 可以改造成一个uid对应多个clientid那种 发消息的时候广播出去就好了

3个月前 评论
Junwind

file

多端登录时,检查一下是否已在其他设备登录过,要么把那个账号踢掉,要么不允许当前账号登录。

1个月前 评论

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