0

こんにちは、以下のzeromqを使用してnodejsでパブリッシャーとサブスクライバーを書いているのは私のコードです

publisher.js

var zmq = require('zmq')
var publisher = zmq.socket('pub')

publisher.bind('tcp://127.0.0.1:7000', function(err) {
if(err)
    console.log(err)
else
    console.log("Listening on 7000...")
})


setTimeout(function() {
    console.log('sent');

    publisher.send("hi")
}, 1000)

process.on('SIGINT', function() {
publisher.close()
console.log('\nClosed')
})

Subscriber.js

 var zmq = require('zmq')
 var subscriber = zmq.socket('sub')

 subscriber.on("message", function(reply) {
 console.log('Received message: ', reply.toString());
 })

 subscriber.connect("tcp://localhost:7000",function(err) {
 if (err) {
     console.log( 'Error binding socket' );
     return;
 }
 subscriber.close(); // This is fine! The socket is ready!
 })
 subscriber.subscribe("")

 process.on('SIGINT', function() {
 subscriber.close()
 console.log('\nClosed')
 })

パブリッシャーがダウンしているか、サブスクライバーがダウンしているときは、コールバックを書き込んでエラーをキャプチャしようとしています.しかし、どちらの場合でも、エラーはキャプチャされていないようです.とても有難い。

4

1 に答える 1

0

ピアが切断されても、ZeroMq はエラーを発生させません。接続と切断の物理的な側面は透過的に処理され、アプリケーションから隠されます。

ピアが使用できない場合に ZeroMq に強制的にエラーを発生させる 1 つの方法は、 withROUTERおよびrouter mandatoryオプションを true に設定することです。ROUTER が物理的に存在しないピアに送信しようとするとROUTER、例外が発生します。

于 2013-10-22T13:58:57.427 に答える