[英]ZMQ Nodejs binding - ZMQ_POLLIN/POLLOUT values
我正在检查这些值,以了解何时可以关闭套接字(也就是说,当套接字没有轮询/发送任何东西时,因此我没有丢失消息)。
我正在使用发送器( 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
receiver.getsockopt(zmq.ZMQ_EVENTS) | zmq.ZMQ_POLLIN == 0
,但是结果>0
并不意味着它正在接收消息,这只是意味着队列未满。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.