我正在检查这些值以了解何时可以关闭套接字(即,当套接字没有轮询/发送任何内容时,因此我没有丢失消息)。
我正在使用发送者zmq.socket('push');
(zmq.socket('pull');
zmq
ZMQ_POLLIN
ZMQ_POLLOUT
{
...
ZMQ_POLLIN: 1,
ZMQ_POLLOUT: 2,
...
}
这对我来说没有意义。如何检查套接字如何没有接收到任何内容,以便确定可以将其关闭而不必担心丢失传入/传出消息?
谢谢
我不认为这些常数意味着你认为它们的意思。它们旨在zmq.poll()
作为兴趣规范传递给函数(或某些类似的,我不知道 Node.js 版本)。然后,您想要检查poll()
调用的返回值,以查看套接字是否仍然处于活动状态。
我确实在看错误的功能。我必须看的是getsockopt(zmq.ZMQ_EVENTS);
。在我的例子中,该函数必须从发送方或接收方调用,并且结果必须与常量 zmq.ZMQ_POLLIN 或 zmq.ZMQ_POLLOUT 的实际值进行按位与运算。
要检查套接字是否正在接收消息,我这样做:receiver.getsockopt(zmq.ZMQ_EVENTS) | zmq.ZMQ_POLLIN == 0
,但有结果>0
并不意味着它正在接收消息,它只是意味着队列未满。