0

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

我正在使用发送者zmq.socket('push');zmq.socket('pull');zmqZMQ_POLLINZMQ_POLLOUT

{
   ...
   ZMQ_POLLIN: 1,
   ZMQ_POLLOUT: 2,
   ...
}

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

谢谢

4

2 回答 2

0

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

于 2013-03-29T13:55:44.797 回答
0

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

要检查套接字是否正在接收消息,我这样做:receiver.getsockopt(zmq.ZMQ_EVENTS) | zmq.ZMQ_POLLIN == 0,但有结果>0并不意味着它正在接收消息,它只是意味着队列未满。

于 2013-04-04T11:44:48.220 回答