【问题标题】:Node.js - Isomorphic TCP / Websocket backend server on same portNode.js - 同一端口上的同构 TCP / Websocket 后端服务器
【发布时间】:2018-11-27 08:45:30
【问题描述】:

我在问是否可以在 node.js 中创建一个后端,该后端具有相同的 API,但在同一端口上兼容 TCP 和 WebSocket 协议?我知道 Websocket 是基于 TCP 的,但是有一些高级的先决条件,并且在这个主题上没有找到任何东西。

谢谢大家

【问题讨论】:

    标签: javascript node.js tcp websocket


    【解决方案1】:

    这可能取决于协议,但会很麻烦。如果它看起来是无效的 HTML,您将不得不挂钩 HTTP 服务器(Web 套接字位于其之上)并将数据洗牌到单独的处理程序。

    这很容易出错。 HTTP 有很多你需要适应的边缘情况。替代协议要么必须足够不同以快速识别,要么实际上与 HTTP 兼容,因此它可以拥有自己的协议升级路径。

    相关:Overriding Node.js HTTP parser

    【讨论】:

    • 感谢您的观点。这意味着您可以使用 websocket 实例调用 HTTP 服务器?然后创建自定义处理程序以创建响应。
    • @Somebody No. Websockets 建立在 HTTP 之上。任何 websocket 客户端也有一个底层的 HTTP 客户端(至少在某种程度上)。您必须在访问 websockets 之前发出 HTTP 升级请求。
    • 再次感谢您的回复。所以我必须进行从 HTTP 到 Websocket 协议的 HTTP 升级。如果我参考 IANA 注册:iana.org/assignments/http-upgrade-tokens/… 我无法从 HTTP 升级到 TCP?
    • @Somebody 没有。在每个 Web 套接字服务器中,都有一个底层 HTTP 服务器。在每个 HTTP 服务器中,都有一个底层 TCP 服务器。我的意思是,如果您的代码检测到 HTTP 请求,您将创建一个 TCP 服务器并将数据(在内部,在您的应用程序中)转发到上层(HTTP、Web 套接字)。如果您的代码检测到其他协议是什么,您就可以像处理该协议一样处理它。同样,由于我在回答中概述的原因,这不是一个好主意。一个更好的解决方案是根本不尝试。
    • 我现在一切都清楚了,伙计。非常感谢您的时间,我想我根本不会尝试,而是为了理论上的概念。
    猜你喜欢
    • 1970-01-01
    • 2018-03-06
    • 1970-01-01
    • 2020-07-23
    • 1970-01-01
    • 2018-01-30
    • 2015-05-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多