websocket - 从 socket.io 迁移到原始 websockets?

标签 websocket socket.io

现在我正在使用带有强制 websockets 的 socket.io 作为传输。我正在考虑迁移到原始 websockets,但我不清楚从 socket.io 中我将失去哪些功能。感谢您的任何指导。

最佳答案

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

  • 如果浏览器不支持 webSockets 或网络路径具有阻止 webSockets 的代理/防火墙,则自动选择长轮询与 webSocket。
  • 如果连接断开(即使服务器重新启动),客户端会自动重新连接。
  • 自动检测死连接(通过使用常规 ping 检测无效连接)
  • 具有与 JSON 的自动转换的消息传递方案。
  • 房间的服务器端概念,可以轻松与一组连接的用户进行通信。
  • 连接到服务器上的命名空间而不是仅仅连接到服务器的概念。这可以用于各种不同的功能,但我用它来告诉服务器我想要订阅哪些类型的信息。这就像连接到特定 channel 。
  • 服务器端数据结构,可自动跟踪所有连接的客户端,以便您随时枚举它们。
  • socket.io 库中内置的中间件架构,可用于实现身份验证等功能,并从原始连接访问 cookie。
  • 首次连接时自动存储连接上的 cookie 和其他 header (对于识别连接的用户非常有用)。
  • 服务器端广播功能,用于向所有连接的客户端、房间中的所有客户端或命名空间中的所有客户端发送公共(public)消息。
  • 使用消息名称标记每条消息并将消息名称路由到 eventEmitter 以便您通过在 eventEmitter 上监听所需消息名称来监听传入消息。
  • 客户端或服务器发送消息然后等待对该特定消息的响应的能力(回复功能或请求/响应模型)。
  • 关于websocket - 从 socket.io 迁移到原始 websockets?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38546496/

    相关文章:

    javascript - AWS 物联网 : Subscribe to Topic in Browser

    testing - 如何通过 jmeter 中的 websocket 采样器传递 json 请求?

    nginx - Safari 不理解我的 Content-Security-Policy header

    javascript - 如何仅引用文件中的一个变量而不是node.js 中的所有导出?

    socket.io 将消息从一个命名空间发送到另一个命名空间

    javascript - Socket.io 和 Node/Express - 超出最大调用堆栈大小

    node.js - NodeJS : What's the best way to share session between server-rendered views and React app

    python - Django channel + 在发布请求后发送 websocket 消息

    javascript - 如何在 .js 文件内提交提示

    javascript - Socket.io 对接会