测试:拔掉终端与外网的网线(局域网是通的,云服务器设置了心跳50秒,且云端判断此终端已经掉线并记录了日志),但是终端超时15分钟后才启动重连机制。AsyncTcpConnection

张祁智

云服务器是正常判断,此终端掉线
终端在超时15分钟左右,自动重连了
而不是直接就知道掉线,像是挂起一样,困惑许久,外网正常

public static function onWorkerStart($worker)
{
$connection_to_yun = new AsyncTcpConnection(ws:x.xxx.com:8888);
$connection_to_yun->transport = 'ssl';
$connection_to_yun->onConnect = ['Events', 'yun_onConnect'];
$connection_to_yun->onMessage = ['Events', 'yun_onMessage'];
$connection_to_yun->onClose = ['Events', 'yun_onClose'];
$connection_to_yun->onError = ['Events', 'yun_onError'];
$connection_to_yun->connect();
}

public static function yun_onClose($connection)
{
$connection->reConnect(1);
}

public static function yun_onError($connection, $code, $msg)
{
echo 'yun_onError: Error code:' . $code . ' msg:' . $msg . '\n';
}

请大佬,指点下,感谢万分

1552 3 0
3个回答

walkor

断网断电这些极端情况需要心跳来检测。
也就是定时向对端发送点数据,检测连接可用性。

  • 张祁智 2020-06-09

    谢谢大佬,也就是客户端,服务端,分别要有心跳机制,做判断。
    客户端,在自己规定时间内没有收到服务端消息,调用close
    服务端,目前,已经能正常判断,只需要增加客户端判断了。
    解决这类极端情况。

back0893

协议的心跳吧.

  • 暂无评论
张祁智

已经完结。对端相互处理

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