ZMQ Nodejs绑定 - ZMQ_POLLIN / POLLOUT值

时间:2013-03-27 12:47:16

标签: node.js sockets zeromq

我正在检查这些值,以了解何时可以关闭套接字(即套接字没有轮询/发送任何内容,因此我不会丢失消息)。

我正在使用发件人(zmq.socket('push');)和接收者(zmq.socket('pull');),但是检查zmq对象我总是拥有ZMQ_POLLIN和{{{{{ 1}}(即使我手动删除连接,也不应该接收或发送消息):

ZMQ_POLLOUT

这对我没有意义。如何查看套接字没有收到任何内容,以便我确定可以关闭它而不用担心丢失传入/传出消息?

由于

2 个答案:

答案 0 :(得分:0)

我不认为这些常数意味着你认为他们的意思。它们应该被传递给zmq.poll()函数(或者一些这样的函数,我不知道Node.js版本)作为兴趣规范。然后,您需要检查poll()调用中的返回值,以查看套接字是否仍处于活动状态。

答案 1 :(得分:0)

我确实看错了功能。我必须看到的是getsockopt(zmq.ZMQ_EVENTS);。在我的情况下,必须从发送方或接收方调用该函数,并且结果必须与常量zmq.ZMQ_POLLIN或zmq.ZMQ_POLLOUT的实际值进行按位AND运算。

要检查套接字是否正在接收消息,我确实喜欢这样:receiver.getsockopt(zmq.ZMQ_EVENTS) | zmq.ZMQ_POLLIN == 0,但结果为>0并不意味着它正在接收消息,这只表示队列未满。< / p>