Socket.IO是如何工作的?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (58)

我使用的是socket.io,并且安装很快,但我想了解更多关于封面下究竟发生了什么以及使它工作的技术。

socket.io的确切机制是什么?

它在端口80还是单独的?

它真的保持开放还是被模拟?

有没有一种方法来分析每个套接字事件?

提问于
用户回答回答于

为了调试,你可能想试用Theseus

以下是socket.io SPEC的简要概述:

Socket.IO旨在将类似WebSocket的API带入许多浏览器和设备,并具有一些特定功能来帮助创建真实世界的实时应用程序和游戏。

  • 多种传输支持。
  • 同一连接下的多个套接字。
  • 通过心跳检测断开连接。
  • 可选配件。
  • 重新连接支持与缓冲(适用于移动设备或不良网络)
  • 位于HTTP之上的轻量级协议。

解析一个Socket.IO插座 Socket.IO客户端首先决定使用一个传输器来连接。 在Socket.IO的状态可以是disconnecteddisconnectingconnectedconnecting。 传输连接可以是closedclosingopen,和 opening。 一个简单的HTTP握手发生在Socket.IO连接的开始。握手如果成功,将导致客户收到:

  • 打开连接的会话ID。
  • 预计有心跳的秒数(heartbeat timeout
  • 如果未重新打开传输连接(close timeout),则在被认为断开连接时关闭传输连接数秒。
用户回答回答于

JAM的文章在总结socket.io的功能方面做得很好; 我想专门解决一些其他问题。

  • Socket.io附加到一个实例http.Server并为其添加处理程序。它不监听自己的网络端口; 它只是将socket.io特定的处理程序添加到现有的HTTP服务器。
  • 如果它使用WebSockets传输,它确实保持打开状态。它还包括使用传统(长)轮询Ajax请求的回退机制。所以答案取决于浏览器支持的API。
  • Fiddler现在支持websockets,Chrome的开发者工具也一样:

扫码关注云+社区

领取腾讯云代金券