从socket.io移动到原始websockets?

时间:2016-07-23 21:15:53

标签: websocket socket.io

现在我正在使用带有强制websockets作为传输的socket.io。我正在考虑转移到原始websockets,但我不清楚我将失去什么功能从socket.io。谢谢你的指导。

1 个答案:

答案 0 :(得分:16)

socket.io库添加了标准webSockets之外的以下功能:

  1. 如果浏览器不支持webSockets,或者网络路径有阻止webSockets的代理/防火墙,则自动选择长轮询与webSocket。

  2. 如果连接断开,则自动重新连接客户端(即使服务器重新启动)。

  3. 自动检测死连接(通过使用常规ping来检测无效连接)

  4. 自动转换为JSON的消息传递方案。

  5. 服务器端的房间概念,可以方便地与一组连接的用户进行通信。

  6. 连接到服务器上的命名空间而不仅仅是连接到服务器的概念。这可用于各种不同的功能,但我用它来告诉服务器我想订阅哪些类型的信息。它就像是与特定频道的连接。

  7. 服务器端数据结构,可自动跟踪所有已连接的客户端,以便您随时枚举它们。

  8. socket.io库中内置的中间件体系结构,可用于实现身份验证,以及从原始连接访问cookie。

  9. 首次连接时自动存储连接上存在的cookie和其他标头(对于识别用户连接非常有用)。

  10. 服务器端广播功能,用于向所有连接的客户端,会议室中的所有客户端或命名空间中的所有客户端发送公共消息。

  11. 使用消息名称标记每条消息并将消息名称路由到eventEmitter,以便通过在eventEmitter上侦听所需的消息名称来侦听传入消息。