我有一個Node.js服務器 - 我希望該進程能夠監聽自身發送的消息 - 這僅用於測試。我遇到的問題是,當向相同的流程發佈消息時,用戶似乎根本沒有收到它。Redis發佈/訂閱 - 同一個進程監聽一個頻道
我有這樣的設置:
var redis = require('redis');
var rcPub = redis.createClient();
var rcSub = redis.createClient();
var message = String('testing123');
rcSub.subscribe('[email protected]_overall_health');
rcSub.on('message', function (channel, msgs) {
console.log(channel,msgs);
});
rcPub.publish('[email protected]_overall_health', message);
我有一個客戶端的Redis充當一個用戶,一個作爲出版人,這是你必須做的方式,但由於某些原因的消息是不正在收到。是否有一個限制,即進程無法收聽它發佈的消息?這似乎沒有道理。我可以驗證這個代碼或多或少是正確的,因爲偵聽同一個通道的其他進程收到了這個消息。
冷靜,感謝,會在我嘗試了這一點在星期一工作:) –
試過了,你說什麼看起來是正確的,謝謝你解決這個問題。我爲自己創建的這個問題存在於各種pub/sub庫中,並清楚地表明我是新手:)這是一個問題,因爲異步庫一直具有欺騙性。國際海事組織,subscriber.subscribe應該強制你包括一個回調,這將消除欺騙。如果你需要一個單獨的回調「sub.on('subscribe')」,那麼你可以自己實現一個eventsEmitter,那會更好的IMO。 –