使用旧会话ID重新连接Socket.IO

时间:2019-03-25 09:14:01

标签: unity3d socket.io

我遇到了一个大问题,我不得不问你们有关重新连接的机制。在我的情况下,有一个活动的套接字连接,尽管网络状态很棘手,但是当客户端要断开连接时,没有什么错。当用户的网络消失时,它进入OnDisconnected。我的重新连接均以2秒的重新连接间隔打开。心跳间隔为30,超时为60。这种情况发生时,服务器(最长)30秒后请求乒乓球请求,由于超时服务器决定套接字已死+ 60秒后。因此,当用户的网络消失时,服务器会在90 s(最大)时间内断开用户的连接。

现在问题开始了。当用户在90 s内打开其网络时,服务器将有一个未使用的块和一个用于唯一用户的活动套接字。我希望客户端重新连接而不强制使用新的套接字。我看到Socket.IO的forceNew值默认为false。重新连接是“始终”启动一个新的套接字,还是仍然存在以重新连接到旧的套接字。我还在连接URL中尝试了用户的sid,但服务器根本没有响应我。我必须为每个唯一的用户存储一个套接字,但是在这种情况下,我不能这样做,这对我来说确实是个问题。我知道我可以降低心跳,尤其是超时,但是由于它是带有Unity(BestHTTP插件)的多人游戏,因此我不能经常使用乒乓球请求。即使我有,也将按照以下规则在同一时间(我用1-2个间隔的超时设置进行测试)一次断开连接和建立多个连接;间隔必须小于超时。仍然没有用。我只希望连接中的旧会话ID能够激活旧套接字而不创建新套接字。因此,我很乐意为您解答。

0 个答案:

没有答案