0MQ 请求在 Node.js 中等待代表

0MQ req wait for rep in Node.js

我是 javascript、Node.js 和 0MQ 的新手,所以这里是 n00b * 3。

我想设置一个简单的请求和回复,但我希望客户端在发出下一个请求之前等待响应。

zguide goes over this, but the Node.js version does not behave like the C版本(这就是我想要的)。

我意识到我正在反对我看待问题的范式转变,但我仍然觉得我应该能够做到这一点。我可以在客户端中进行 recv 调用(或类似的调用)吗?

你是对的,如果你来自 C 版本,ZMQ 的 node.js 版本并不像你期望的那样运行,但它实际上 按规矩办事,就是添油加醋

具体来说,如果您尝试打破严格的 REQ/REP/REQ/REP 循环,C 绑定将抛出错误。在 node.js 中,它会缓存乱序的消息,直到先前的响应返回,然后 然后 发送新消息......所以你仍然得到REQ/REP/REQ/REP,按顺序,您可以选择随时发送消息,不会出错。

对于节点 ZMQ 绑定作者而言,这可能是一个糟糕的设计选择,首先是因为它会让像您这样的新用户感到困惑,其次如果您使用 REQ/REP如果出现故障,您可能更喜欢硬故障,否则您将使用不同的套接字类型。