繁体   English   中英

ZMQ Node.js绑定-ZMQ_POLLIN / POLLOUT值

[英]ZMQ Nodejs binding - ZMQ_POLLIN/POLLOUT values

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

我正在使用发送器( zmq.socket('push'); )和接收器( zmq.socket('pull'); ),但是在检查zmq对象时,我始终具有ZMQ_POLLINZMQ_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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM