2015-06-19 15 views
3

我是javascript,Node.js和0MQ的新手,所以n00b * 3在这里。0MQ req在Node.js等待代表

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

zguide克服了这一点,但Node.js版本不像C版本(这是我想要的)。

我意识到我在对待这个问题的模式转变,但我仍然觉得我应该能够做到这一点。我可以在客户端拨打(或类似的)recv吗?

+0

您是否可以扩展您的客户在下一个请求之前需要等待响应的意思?如果你在谈论HTTP请求,你应该记住HTTP请求无论是平台/语言都是无状态的。如果您只想确保同一客户端在收到第一个请求之前不发送两个请求,只需使用IP/origin/cookie过滤请求(即:以任何方式区分客户端)。 – Bwaxxlo

+0

我正在使用它进行进程间通信。具体来说,我有一个进程收集数据,并且希望在从网络发送聚合数据之前从其他进程获取数据。我不想将数据发送出网络,直到我从其他进程收到回复,并且获得了所有数据。 – Coop

回答

2

如果你是对的,ZMQ的node.js版本的行为不符合你对C版本的期望,但它实际上是根据规则行事,它是只是加入一点点自己的酱汁混合。

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

这可能是节点ZMQ绑定作者方面糟糕的设计选择,首先是因为它让新用户感到困惑,比如你自己,其次,如果你使用REQ/REP,你可能会如果发生故障,请选择硬故障,否则您将使用不同的套接字类型。

+0

[Here's](https://github.com/JustinTulloss/zeromq.node/issues/259#issuecomment-30026059)我在节点ZMQ绑定页面上的对话中找到了它,它可能会提供一些额外的上下文。 – Jason