У меня есть два .js
файла - pub.js
для публикации и sub.js
для подписки. Эти файлы на самом деле являются «разделенной» версией примера, показанного на node-nanomsg GitHub. сайт. pub.js
пишет в tcp://127.0.0.1:7789
, а sub.js
читает из него же. Сначала я запускаю sub.js
, а затем pub.js
. В то время как pub.js
завершается быстро, sub.js
никогда не получает сообщение.
pub.js
var nano = require('nanomsg')
var pub = nano.socket('pub')
pub.bind('tcp://127.0.0.1:7789')
//
pub.send('Hello')
pub.close()
sub.js
var nano = require('nanomsg')
var sub = nano.socket('sub')
sub.connect('tcp://127.0.0.1:7789')
//
sub.on('data', function(buf) {
console.log(String(buf))
sub.close()
})
ОБНОВИТЬ
Если pub.js
записывается, как показано ниже, и sub.js
запускается первым, то связь проходит.
var nano = require('nanomsg')
var pub = nano.socket('pub')
pub.bind('tcp://127.0.0.1:7789')
//
setTimeout(() => {
pub.send('Hello')
},2000)
//pub.close()
Но парадигма pub-sub не требует, чтобы издатели и подписчики знали друг о друге. Как включить систему pub-sub с nanomsg
?
pub.js
первым в исходном примере? Единственная разница между исходным кодом и обновлением заключается в том, что вы добавляете тайм-аут кpub.js
. Что, если вы просто подождите 2 секунды в исходном примере, а затем запуститеpub.js
- person mihai   schedule 20.11.2018