我是javascript,Node.js和0MQ的新手,所以这里是n00b * 3。
我想设置一个简单的请求和回复,但我希望客户端在发送下一个请求之前等待响应。
zguide会解决此问题,但Node.js版本的行为与C版本不同(这就是我想要的)。
我意识到我在看待问题的方式上正在反对范式转变,但我仍然觉得我应该能够做到这一点。我可以在客户端进行recv
电话(或类似的)吗?
答案 0 :(得分:2)
你是对的,如果你来自C版本,那么ZMQ的node.js版本的行为不会像你期望的那样,但实际上 的行为是根据规则,它只是添加了一些自己的调料混合。
具体来说,如果您尝试打破严格的REQ / REP / REQ / REP循环,C绑定将引发错误。在node.js中,它将缓存无序消息,直到上一个响应返回,然后发出新消息...所以你仍然得到REQ / REP / REQ / REP,按顺序,您可以选择在没有错误的情况下随时发送消息。
这可能是节点ZMQ绑定作者的一个糟糕的设计选择,首先是因为它让你这样的新用户感到困惑,其次如果你使用REQ / REP你可能更喜欢如果你出故障就会出现硬故障,否则你会使用不同的套接字类型。