Node.js重用tcp连接

时间:2013-12-15 16:00:33

标签: node.js sockets

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

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

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

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

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

1 个答案:

答案 0 :(得分:1)

这是可能的,但需要一些编码。

如果它不是粘性的(同一HTTP客户端不需要使用相同的TCP连接):

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

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

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