【问题标题】:How Would I Build A NodeJS Websocket Server Without A Library如何在没有库的情况下构建 NodeJS Websocket 服务器
【发布时间】:2014-07-18 23:22:12
【问题描述】:

我最近在 NodeJS 中构建了一个小型 JSON Web 服务,并且有兴趣将其扩展为通过 WebSockets 接受请求。

到目前为止,我发现的大多数 WebSocket 教程都是基于 SocketIO 等 3rd 方模块的。

编写 WebSocket 服务器需要什么? 假设跨浏览器兼容性在这里不是问题,并且我所有的客户都可以访问一个不错的浏览器。

【问题讨论】:

  • 从浏览 WebSockets 规范 (tools.ietf.org/html/rfc6455) 来看,这可能是一项艰巨的任务。您可能还可以使用现有的库并对其进行修改。
  • SocketIO 不是 WebSocket 库;它比那更高。你可能想看看ws,它抽象了协议,而不像 SocketIO 那样尝试添加更多协议。
  • @Aaron - 可以否认我喜欢看 WS 的建议,但我很想了解如何从头开始编写 WebSocket 服务器。
  • “可以”==“不能”。

标签: javascript json node.js websocket comet


【解决方案1】:

我将首先查看该项目的源代码:https://github.com/Worlize/WebSocket-Node

【讨论】:

    【解决方案2】:

    嗯,你基本上只需要阅读 RFC 然后实施它:)

    在高层次上,WebSockets 只不过是一个扩展的 HTTP 连接。他们通过UPGRADE 请求和一些握手来启动。之后浏览器和服务器通过现有的 HTTP TCP 连接发送framed 消息。

    但在此过程中存在一些复杂情况,因为 WebSocket 协议有多个版本,其中一些不支持二进制传输。

    RFC 可以在这里找到:https://www.rfc-editor.org/rfc/rfc6455

    它基于version 17 of the protocol。这是,除了一些细微的差异,主要是Version 13

    还有一些旧版浏览器只支持协议的Version 6(其中的框架和初始握手完全不同)。

    对于第 6 版和第 13 版的准系统实现,您可以查看我的一个库,它几乎只是将 WebSocket 协议包装到标准 Node.js 抽象中:
    https://github.com/BonsaiDen/lithium/tree/master/lib

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-05-13
      • 1970-01-01
      • 2015-09-22
      • 2015-04-25
      • 2018-01-19
      • 2016-04-12
      • 1970-01-01
      • 2017-08-18
      相关资源
      最近更新 更多