【问题标题】:ZMQ Nodejs binding - ZMQ_POLLIN/POLLOUT valuesZMQ Nodejs 绑定 - ZMQ_POLLIN/POLLOUT 值
【发布时间】:2013-04-04 19:44:48
【问题描述】:

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

我正在使用发送者 (zmq.socket('push');) 和接收者 (zmq.socket('pull');),但在检查 zmq 对象时,我始终拥有 ZMQ_POLLINZMQ_POLLOUT 的这些值(即使我手动删除了连接,因此不应接收或发送任何消息):

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

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

谢谢

【问题讨论】:

  • 浏览这个question 和问题中的链接你会有所了解..
  • 我没有尝试建立连接。我想知道套接字何时不再接收消息 - 即我可以在不丢失消息的情况下终止套接字。

标签: node.js sockets zeromq


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-08-26
      • 2014-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-23
      • 1970-01-01
      相关资源
      最近更新 更多