Gateway::isUidOnline 有时不在线

freely

bug描述

我在登录时,使用Gateway::bindUid($client_id, $pc_user_id);绑定了登录用户信息
然后,在其它要用的地方时,我先使用Gateway::isUidOnline($pc_user_id)判断是否在线,有在线再处理业务发送信息。
但是在使用中,发现会有极小的概率出现Gateway::isUidOnline返回false值,不在线。有时又可以了。很奇怪。
请教下大概会是什么原因呢?
如何避免出现这样的问题呢?

这是绑定的

程序代码或配置

$pc_user_id=$admin_id.'||wx||'.$user_id;
Gateway::bindUid($client_id, $pc_user_id);//更新pcid值
Gateway::leaveGroup($client_id,'NoDistributionGroup');//从未分配组去掉
Gateway::leaveGroup($client_id,'NoWeChatGroup');//从未登录组去掉

这是调用的

$pc_user_id=$admin_id.'||wx||'.$user_id;
if(Gateway::isUidOnline($pc_user_id)){
    print_r('在线');
    //在线处理业务相关
}else{
    //不在线,出现异常
}

期待的结果及实际结果

重现bug的步骤

系统环境及workerman/webman版本

workerman4.0.19+GatewayWorker

743 2 0
2个回答

稚出

有没有可能就是没在线

  • 暂无评论
walkor

有可能连接断开了,也有可能是业务逻辑问题,例如有一定几率未执行到binduid。
记录下日志自己排查下吧,onConnect、onClose、bindUid时都记录下日志,日志里把client_id带上。
根据你目前提供的这些信息无法定位到具体问题。

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