node-nanomsg - 订阅者不接收消息
node-nanomsg - subscriber does not receive messages
我有两个 .js
文件 - pub.js
用于发布,sub.js
用于订阅。这些文件实际上是 node-nanomsg GitHub site 上显示的示例的 'split' 版本。 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()
但是,发布-订阅范式不需要发布者和订阅者相互了解。如何使用 nanomsg
启用发布-订阅系统?
似乎在绑定 tcp 套接字完成之前,发布者关闭了通信。
库不提供 bind
和 connect
的异步版本,似乎 bind
在函数 returns 时没有完全执行完。添加超时只是解决此问题的方法。
在他们的 Github 存储库中查看此讨论:rewrite bind/connect and remove setTimeouts from tests
不幸的是,拉取请求已关闭,异步功能仍未实现。
如果你看他们提供的examples,他们都依赖超时,这意味着开发人员已经承认了这个问题。在我看来,这个库还没有准备好用于生产,因为它依赖于超时。
我有两个 .js
文件 - pub.js
用于发布,sub.js
用于订阅。这些文件实际上是 node-nanomsg GitHub site 上显示的示例的 'split' 版本。 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()
但是,发布-订阅范式不需要发布者和订阅者相互了解。如何使用 nanomsg
启用发布-订阅系统?
似乎在绑定 tcp 套接字完成之前,发布者关闭了通信。
库不提供 bind
和 connect
的异步版本,似乎 bind
在函数 returns 时没有完全执行完。添加超时只是解决此问题的方法。
在他们的 Github 存储库中查看此讨论:rewrite bind/connect and remove setTimeouts from tests
不幸的是,拉取请求已关闭,异步功能仍未实现。
如果你看他们提供的examples,他们都依赖超时,这意味着开发人员已经承认了这个问题。在我看来,这个库还没有准备好用于生产,因为它依赖于超时。