我正在检查这些值,以了解何时可以关闭套接字(即套接字没有轮询/发送任何内容,因此我不会丢失消息)。
我正在使用发件人(zmq.socket('push');
)和接收者(zmq.socket('pull');
),但是检查zmq
对象我总是拥有ZMQ_POLLIN
和{{{{{ 1}}(即使我手动删除连接,也不应该接收或发送消息):
ZMQ_POLLOUT
这对我没有意义。如何查看套接字没有收到任何内容,以便我确定可以关闭它而不用担心丢失传入/传出消息?
由于
答案 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>