win版本的GatewayWorker的isUidOnline跟getClientIdByUid 没起作用

kingcaigen

win版本的GatewayWorker

我在login的时候进行了Gateway::bindUid($client_id,$uId);的操作,
然后我紧跟着写了以下代码

$tt = Gateway::isUidOnline($uId);
echo ' ==**>'.$tt.' d=== ';
$cid = Gateway::getClientIdByUid($uId);
var_dump($cid);

发现$tt跟$cid 分别是0跟空的数组。
而我同时使用Gateway::sendToUid($uId,json_encode( $new_message));是能给$uId发送消息的。
为什么Gateway::isUidOnline跟Gateway::getClientIdByUid返回的都是0或者空呢?
$uId明明在线啊

2499 5 0
5个回答

walkor

binduid是异步的操作,不能完全保证设置完后立刻成功

  • 暂无评论
kingcaigen

@walkor 但是我在其它非login的case里面(只在login的时候binduid)使用 $_SESSION 是能获取到数据的,在其它case中使用sendToUid跟getClientIdByUid 一样是0和空,但同时也是可以通过sendToUid发送消息

  • 暂无评论
kingcaigen

@walkor 而且我设置成功后,我调用sendToUid是能发送消息成功的。但是isUidOnline跟getClientIdByUid 就不可以
真的好郁闷

  • 暂无评论
walkor

你可以重新更新GatewayWorker代码试下,有可能是使用了开发过程中产生的一个中间版本

  • 暂无评论
kingcaigen

@walkor 从github上获取?还是在官网上下载?
哪个新点?
我现在用的是 7月13号从官网下载的
workerman-chat-for-win-master.zip

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