2016-05-16 113 views
0

我有两个浏览器socket.io客户端。例如。客户端A和客户端B以及它们连接到第一个房间。Socket.io - nodejs服务器端。重新连接后关闭传输

以下行为发生在我的电脑上(安装nodejs 5,socket.io 1.4.5): 我们假设两个客户端都连接到Room One。当客户端A断开连接(失去连接)并在超时后重新连接并且客户端B不使用发送消息发送消息给第一个房间时,则客户端A的原始套接字将以传输原因关闭:超时。这对我很好。我需要这种行为。

在另一面: 当在该断开时间客户端A断开(失去连接)和在超时时间和客户端B重新连接使用发射用于信息发送到一个房间,客户端A的然后原始套接字重新连接之后会立即关闭并且没有超时。

看起来有些行为会在超时时间内选择断开连接的套接字,以便其他一些在线套接字尝试向同一个房间发送消息。当emited消息无法传送到断开连接的套接字(在客户端)时,那么此套接字可能选择在超时时间重新连接后立即关闭事务。

+0

你有试过什么吗? –

+0

我这么认为。我用其他方式解决了它。我为在断开事件上执行的函数添加了setTimeout。通过这种方式,我可以将数据存储到从旧套接字到新套接字的变量中,因为在超时期间,新套接字将此数据限制在setTimeout函数的限制内。 –

+0

有谁知道更好的解决方案? –

回答

0

我注意到了更多的问题。当移动客户端丢失连接并且有人发送到移动客户端连接的房间时,移动套接字会立即断开连接,而没有超时的原因传输在Linux上关闭。

以上情况对于mac系统是不同的。如果客户端移动设备重新连接,则套接字已断开连接超时消失或立即生效。

任何人都可以帮助什么是相同版本的节点(6.2)和相同版本的套接字(1.4.6)上的这种行为是不同的原因?

+0

有人不知道解决方案吗?真? –

相关问题