【发布时间】:2018-08-26 13:29:34
【问题描述】:
编辑:我看到我在服务器上disconnect 的处理程序中得到了ping timeout 和transport error 原因。这使得在我的服务器中维护状态变得困难(我试图跟踪哪些用户在类似聊天的设置中连接(。我正在阅读它可能与 Chrome 中的背景选项卡有关(我正在运行). 有人对这些“虚假”断开连接事件有任何经验吗?
我是 Socket.io 的新手,在理解连接和断开连接过程时遇到了一些麻烦。
据我了解,当客户端连接时,服务器会收到一次connection 事件,并且在on.('connection') 的回调中注册该客户端的所有处理程序。这是真的吗?
我想维护一个已连接的用户,因此我在 connection 处理程序上的该数组中添加了一个用户。
然后我应该监听disconnect 事件以了解何时从该数组中删除用户吗?我可以保证该事件只会被触发一次吗?
这有点令人困惑,因为在客户端,有 connect 事件,显然可以多次触发 - 文档说
// note: you should register event handlers outside of connect,
// so they are not registered again on reconnection
这是与服务器端不同的范例,所有处理程序都注册在内部connection 处理程序。但是如果客户端connect 事件可以在重新连接时触发,那么reconnect 事件是干什么用的? (文档说这个事件是“在成功重新连接时触发的。”)
总的来说,我对连接、断开和重新连接的过程以及这与事件的关系感到困惑,它是由于连接问题而“随机”发生还是仅在程序员的控制下发生,以及应该发生多少次预计会收到这些事件中的每一个 - 一次仅用于服务器,多次用于客户端?
感谢您的帮助!
【问题讨论】: