为了进行调试,您可能需要尝试 Theseus 。
这是 socket.io SPEC 的简短概述:
Socket.IO旨在将类似WebSocket的API引入许多浏览器和设备,并具有一些特定功能来帮助创建现实世界的实时应用程序和游戏。
- 多种传输支持(旧用户代理,移动浏览器等)。
- 同一连接(名称空间)下的多个套接字。
- 通过心跳进行断线检测。
- 可选的致谢。
- 带缓冲的重新连接支持(适用于移动设备或不良网络)
- 位于HTTP之上的轻量级协议。
Socket.IO套接字的剖析
Socket.IO客户端首先决定要用于连接的传输。
在Socket.IO插座的状态可以是
disconnected,disconnecting,connected和connecting。传输连接可以是
closed,closing,open,和opening。一个简单的HTTP握手在Socket.IO连接的开始进行。如果成功握手,则客户端将收到:
- 将为传输打开连接而提供的会话ID。
- 预期心跳的秒数(
heartbeat timeout)- 如果未重新打开传输连接(
close timeout),则认为套接字已断开,传输连接关闭后的秒数。在这一点上,套接字被视为已连接,并且向传输器发送了信号以打开连接。
如果传输连接已关闭,则两端将缓冲消息,然后适当地对其进行构架,以便在恢复连接时将其作为批发送。
如果在协商的超时时间内未恢复连接,则认为套接字已断开连接。此时,客户端可能决定重新连接套接字,这意味着需要进行新的握手。
如果您需要更多详细信息,则可以在此处阅读本规范的其余部分。



