在 node.js 中管理基于命令的 TCP 套接字 API 上的连接

Posted

技术标签:

【中文标题】在 node.js 中管理基于命令的 TCP 套接字 API 上的连接【英文标题】:Managing connections on a command based TCP socket API in node.js 【发布时间】:2012-11-11 23:21:59 【问题描述】:

我构建了一个基于 expresss.js 的 RESTful API,它使用 JSON 通过 TCP 套接字与远程服务器通信。请求的 URL 被转换为适当的 JSON 消息,打开一个新的 TCP 套接字并发送消息。然后,当收到来自同一连接的消息时,会触发一个事件,评估 JSON 回复并返回新的 JSON 消息作为 GET 请求的结果。

可能的路径:

    异步(当前正在使用) - 为每个服务器打开一个连接 要求。 同步 - 创建一个包含所有请求的队列并等待 响应,阻塞代码。 跟踪 - 一次发送所有请求并异步接收答案。在请求上使用跟踪器 ID,将每个请求与其答案相关联。

最好的方向是什么?有什么通用的模式可以解决这种应用吗?

【问题讨论】:

【参考方案1】:

1(异步,每个请求都有一个新连接)可能是最容易实现的。

如果您想有效地重用套接字,您应该想出自己的“保持活动”机制 - 本质上是使用同一个套接字流式传输多个请求和答案。

我可能会使用双 CRLF ('\n\r\n\r') 作为每个 JSON 请求的分隔符,为每个请求触发一个“请求”事件,然后简单地异步写回答案。可以使用无定界符的流式传输,但是当您从套接字接收到部分 JSON 字符串时,它需要额外的解析。

【讨论】:

以上是关于在 node.js 中管理基于命令的 TCP 套接字 API 上的连接的主要内容,如果未能解决你的问题,请参考以下文章

为啥 Node.js 中的某些 TCP 套接字比大多数其他套接字需要更多的时间来连接?

多台机器上的 Node.js tcp 套接字服务器

在 node.js 中,如何创建一个自动绑定到可用端口的 UDP 套接字?

Node.js TCP 传入消息拆分成包

基于tcp协议的套接字通信:远程执行命令

通过套接字发送命令,但每次都等待响应(Node.js)