在 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 套接字比大多数其他套接字需要更多的时间来连接?