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の実際の値とビット単位でAND演算する必要があります。

ソケットがメッセージを受信して​​いるかどうかを確認するには、次のようにしますreceiver.getsockopt(zmq.ZMQ_EVENTS) | zmq.ZMQ_POLLIN == 0。ただし、結果>0が表示されても、メッセージを受信して​​いるわけではなく、キューがいっぱいではないことを意味します。

于 2013-04-04T11:44:48.220 に答える