问题一:worker大神,我这边的设备已经成功登陆了,并绑定了uid,在接受心跳指令的时候,我这边做了一个uid是否在线的判断,但是设备在第一次成功登陆,并发送心跳过来时,Gateway::isUidOnline($uid)总是判断不在线,当设备重新登陆后,再发送心跳时,Gateway::isUidOnline($uid)会判断在线,我打印了$client_idarr,即uid绑定的clientid;
Gateway::bindUid($client_id,$uid);
$client_idarr = Gateway::getClientIdByUid($uid);
发现该变量有值,那么设备应该是成功绑定client_id了,也打印了uid,发现uid也正常,但是Gateway::isUidOnline($uid)却还是判断不在线,还有一点就是并不是所有设备都有这种情况,还请大神赐教
问题二:
$gateway->pingInterval = 55;
$gateway->pingNotResponseLimit = 2;
和
$gateway->pingInterval = 110;
$gateway->pingNotResponseLimit = 1;
有什么不同吗?
问题一:
isUidOnline是基于getClientIdByUid实现的,所以如果
Gateway::getClientIdByUid($uid);
有值,那么isUidOnline肯定会返回非0的值,同时打印下isUidOnline和getClientIdByUid的返回值看下。问题二:
根据手册
代表服务端每55秒给客户端发送一次心跳(pingData有值的情况下),如果客户端55*2=110秒内没有任何数据发来,则代表客户端已经掉线,服务端执行关闭连接
则是110秒发送一次心跳给客户端,同样是110秒内没有任何数据发来,则代表客户端已经掉线,服务端执行关闭连接
手册:http://doc2.workerman.net/hea...