gpt4 book ai didi

javascript - node-nanomsg - 订阅者不接收消息

转载 作者:行者123 更新时间:2023-11-30 06:20:34 26 4
gpt4 key购买 nike

我有两个 .js 文件 - pub.js 用于发布,sub.js 用于订阅。这些文件实际上是 node-nanomsg GitHub site 中所示示例的“拆分”版本. pub.js 写入 tcp://127.0.0.1:7789sub.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 启用发布-订阅系统?

最佳答案

似乎在绑定(bind) tcp 套接字完成之前,发布者关闭了通信。

该库不提供bindconnect 的异步版本,看起来bind 在函数返回。添加超时只是解决此问题的一种方法。

在他们的 Github 存储库上查看此讨论:rewrite bind/connect and remove setTimeouts from tests
不幸的是,拉取请求已关闭,异步功能仍未实现。

如果您查看 examples他们提供,他们都依赖超时,这意味着问题被开发人员承认。在我看来,这个库还没有准备好用于生产,因为它依赖于超时。

关于javascript - node-nanomsg - 订阅者不接收消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53390520/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com