从技术上讲,不是nanomsg-,而是nng问题。
我希望有多个仅偶尔运行(临时)的订阅者和发布者。
在nngcat
[1]的联机帮助页中,我找到了pubsub的以下示例:
$ addr=ipc:///grandpa_clock
$ nngcat --pub --listen=${addr} --data "cuckoo" --interval 3600 &
$ nngcat --sub --dial=${addr} --quoted &
"cuckoo"
似乎在起作用。 :)
现在,我的期望是,如果我放弃--interval
,它应该发送的正是一条消息,该消息应该由订户接收。但是什么都没有出现。
根据我的理解,订阅服务器应该是使用listen
(套接字绑定的别名)的人,而发布服务器应该是使用dial
(套接字连接的别名)的人-作为订阅者是连续运行的过程,而发布者可能会重复运行,每次运行都会发出一条消息。
如果将命令更改为
$ addr=ipc:///tmp/x
$ nngcat --sub --listen=${addr} -A
$ nngcat --pub --dial=${addr} --data "cuckoo"
它似乎按预期工作,但是当我尝试连接第二个 订阅者,我收到以下错误消息:
Unable to listen on ipc:///tmp/x: Address in use
所以我想我的问题是:如何在每次运行(临时)的基础上与发布者发送消息的同时连接多个订户?
此外,我想问一下是否可以让nncat
从STDIN读取数据,例如:
date | nncat --pub --dial=${addr} --file -