【发布时间】:2019-11-27 21:00:58
【问题描述】:
我正在访问的 TCP 服务器(尝试使用内置节点 TLS 套接字)需要按特定顺序发送/接收的握手过程(发送、接收成功、发送更多消息、成功时、发送更多,等等)。接收消息没有任何内容让我知道它正在响应哪个发送,因此我无法轻松使用内置 TCP 节点库的流式传输特性。
关于在 Node 中处理这种情况的最佳方法有什么想法吗?
示例(python),这是该过程的示例:
s.send("hello")
s.send("send this 1")
reply = s.recv()
message = reply[0]
if message == OK:
print('Got OK for hello')
s.send("send this 2")
reply = s.recv()
message = reply[0]
if message == OK:
print('Got it')
else:
raise Exception('Failed to send hello')
【问题讨论】:
-
此服务的其他客户端如何处理?你有代码要分享吗?
-
我们必须更多地了解您尝试实施的发送/接收协议。由于 TCP 是低级别的,如果您的另一端是基于 TCP 的(显然是),那么肯定有一种方法可以对这一端进行编码,但是如果不知道协议是什么,我们就无法帮助您。你连接的服务器是什么?它使用什么协议?
-
仅供参考,内置 TCP 库的工作方式与 TCP 的工作方式相同(与 node.js 无关)。如果您需要在 TCP 之上实现一个协议并需要帮助,您必须向我们展示该协议是什么,我们可以帮助您如何在 node.js 中实现它。所以,现在,这个问题是不完整的。它没有包含足够的信息,我们无法为您提供帮助。也许你需要的是一个状态机。
-
是的,有一个协议,这就是我试图弄清楚如何处理套接字上的流。有一个协议……发送,然后接收,如果ok,则发送更多……等等。
-
伪代码很好,但仍不清楚客户端和服务器应该如何通信。消息是否以数据长度为前缀?它们是否由特殊字符分隔?您声称这是一个 send-recv 协议,但您要做的第一件事是发送两个连续的消息。这里的期望是什么?是每个响应一个请求还是我们缺少其他详细信息?