【问题标题】:Node.js reuse tcp connectionNode.js 重用 tcp 连接
【发布时间】:2013-12-16 00:13:29
【问题描述】:

我是 node.js 的新手 所以这个问题可能很幼稚。

我想使用 node.js 作为 javascript 客户端和 Windows 程序之间的代理,该程序的 API 通过定义的端口工作。 因此浏览器向 node.js 发送 HTTP 请求。 Node.js 打开与 windows 程序的连接,发送请求,获取响应并将响应返回给调用 node.js 的 javascript (AJAX)

实际上它已经实现并且有效。 问题是 Windows 程序想要持久工作。 因此,一旦打开连接,它就应该保持活动状态。

我的 node.js 脚本打开了连接。并且对 node.js 的下一次调用尝试再次打开连接。这会导致错误。

所以问题 - 在 node.js 中重用 TCP 连接的正确方法和中间是什么。 因此,下一个呼叫不会打开新连接,而是继续已经打开的连接。

【问题讨论】:

    标签: node.js sockets


    【解决方案1】:

    这是可能的,但需要您自己编写一些代码。

    如果不粘(同一个HTTP客户端不需要使用同一个TCP连接):

    • 打开一个 TCP 连接到 windows 程序的连接池
    • 监听 HTTP 请求
    • 如果 HTTP 请求到达,则查找未使用的 TCP 连接(如果没有可用的 TCP 连接,则创建一个新连接或等待)
    • 查询windows程序,将结果返回给曾经调用过HTTP请求的人
    • 将 TCP 连接标记为空闲

    如果是粘性的(始终为同一个 HTTP 客户端使用同一个 TCP 连接):

    • 如果一个 HTTP 客户端连接但他没有,给他会话。
    • 如果会话不可用:创建 TCP 连接
    • 发出请求,返回结果
    • 将 TCP“连接”存储在下一个请求进入时您可以到达的地方,并且您可以通过 HTTP 客户端会话识别它(可能会为清除设置超时)

    【讨论】:

    • 谢谢。越来越近。 :) 现在的问题是 node.js 如何“存储 TCP”连接并在另一个调用中重新打开它。
    • 将变量放入不会被垃圾回收的地方。 Node.js 是单线程的,因此只要您不使用子进程,就不会出现问题。
    • 谢谢,它有效。我什至没想到会这么容易:)
    猜你喜欢
    • 1970-01-01
    • 2014-12-03
    • 2020-10-11
    • 2012-05-02
    • 2014-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-09
    相关资源
    最近更新 更多