Технически это не nanomsg-, а nng-вопрос.
Мне нравится, когда несколько подписчиков и издателей работают только изредка (ad-hoc).
В справочной странице для 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"
похоже, работает как положено, но при попытке подключить 2й
подписчик получаю следующее сообщение об ошибке:
Unable to listen on ipc:///tmp/x: Address in use
Таким образом, я предполагаю, что мой вопрос: как я могу подключить несколько подписчиков, отправляя сообщения с издателем на основе (за раз) (* ad-hoc)?
Кроме того, я хотел бы спросить, можно ли заставить nncat
читать данные из STDIN, что-то вроде:
date | nncat --pub --dial=${addr} --file -
[1] https://nanomsg.github.io/nng/man/v1.1.0/nngcat.1