【问题标题】:node.js WebSocket server compatible with Chrome 14+ and with Safari?node.js WebSocket 服务器与 Chrome 14+ 和 Safari 兼容?
【发布时间】:2012-02-23 08:35:17
【问题描述】:

我一直在使用来自http://github.com/ncr/node.ws.js 的node.js WebSocket 实现,但它只与Safari 5.0.1 实现的hixie-76 版本的协议兼容。

我还需要使用 Chrome,它现在根据 RFC 6455 实现官方协议。

有谁知道node.js 的服务器端实现,它与hixie-76hybi-17(又名“版本13”)兼容?

推荐 Socket.IO - 它不是真正的 WebSockets!

我知道的不起作用的实现(在撰写本文时)是:

【问题讨论】:

  • 我不知道有任何 node.js 服务器同时支持 Hixie 和 HyBi/IETF 6455,但作为参考,以下是仅支持新版本的服务器:github.com/Worlize/WebSocket-Nodegithub.com/einaros/ws I我也对支持两者的解决方案感兴趣,这样我就可以将它用于我的 Node.js 实现 websockify 所以希望其他人知道答案。
  • 感谢第二个 - 它不在我的清单上(但现在是)
  • 什么意思 Socket.IO 不是真正的 WebSockets?当然可以,但是如果 WebSocket 通信是不可能的,它会做一些其他的事情。
  • @freakish 我的意思是,除非您还在客户端中实现了 Socket.IO 协议层,否则您不能在客户端中使用本机 WebSocket 与 Socket.IO 服务器通信。 Socket.IO 位于 WebSockets之上(或者其他东西,如果它们不可用的话)。
  • @Alnitak 好吧,Socket.IO 不是协议,最好将其称为 WebSocket 包装器(因为我相信我们确实同意所有通信都通过 WebSockets)。但是你是对的,虽然我不明白为什么这很糟糕?为什么你不能使用它? Socket.IO 绝对是最成熟、最强大的 WebSocket/Node.js 库。

标签: node.js websocket


【解决方案1】:

自从昨天看到这个问题后,我花了一些时间在 ws 中实现 hixie-76 支持(尽管我宁愿只坚持 hybi)。

查看 0.4.2 版是否可以通过 npm 或 https://github.com/einaros/ws 获得帮助。

【讨论】:

    【解决方案2】:

    你可以试试这个库:https://github.com/wcauchois/websocket-fallback

    它对实现新版本协议的浏览器使用 Worlize/WebSocket-Node,对旧浏览器使用 miksago/node-websocket-server(Safari,我在看着你!)

    您只需使用一个 API,它就可以透明地为您处理各种浏览器/连接/库。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-13
      • 2013-05-15
      • 2014-04-07
      • 1970-01-01
      • 2017-02-20
      • 2020-09-10
      相关资源
      最近更新 更多