Что было бы лучшим способом сделать общение по всему миру, было бы лучше сделать паб-суб, все, кто подписывается на всех, или есть тип сокета, более подходящий для это?Zeromq Broadcast All to All
ответ
Вы можете добиться этого с помощью прокси-сервера XPUB/XSUB; многие клиенты говорят со многими другими клиентами; обзор в руководстве here.
Proxy
Посредник выступает в качестве посредника для подключения многие ко многим клиентам; пример от expresso.c. Прокси-сервер работает автономный:
void *subscriber = zsocket_new (ctx, ZMQ_XSUB);
zsocket_bind (subscriber, "tcp://*:6000");
void *publisher = zsocket_new (ctx, ZMQ_XPUB);
zsocket_bind (publisher, "tcp://*:6001");
zmq_proxy (subscriber, publisher, 0);
Клиент
клиент играет роль издателя и подписчика одновременно. В основной теме создайте паб-сокет, подключите его к стороне XSUB прокси; используйте это для отправки сообщений.
void *publisher = zsocket_new (ctx, ZMQ_PUB);
zsocket_connect (publisher, "tcp://localhost:6000");
Теперь вы хотите создать дочерний поток в клиенте, который прослушивает сообщения от прокси на XPUB:
void *subscriber = zsocket_new (ctx, ZMQ_SUB);
zsocket_connect (subscriber, "tcp://localhost:6001");
Когда клиент издает сообщения, все клиенты прослушивает XSub получит его, включая клиента, который отправил сообщение, поэтому имейте это в виду.
Если вам не нужна двунаправленная передача сообщений, реализуйте PubClient и SubClient, каждый из которых играет предполагаемую роль для отправки или получения, но не для обоих; вышеупомянутый клиентский код будет просто разделен на два класса для этого подхода.
Опять же, есть другие способы сделать это, но это наиболее просто. надеюсь, что это поможет
- 1. Spark broadcast to all keys - updateStateByKey
- 2. XBee Send To All
- 3. Mail to all user
- 4. libxml2 all xml to char
- 5. sumifs to loop all sheets
- 6. Indesign All Layer to illustrator
- 7. Check All/Uncheck All with jquery
- 8. Какой подход следует использовать ALL ALL?
- 9. Оптимизация SQL-запроса с помощью All All
- 10. SQL Puzzle - UNION ALL без UNION ALL
- 11. 'select all' and 'remove all' with selected.js
- 12. apply css to previous all images
- 13. Render to FBO + glReadPixels all black
- 14. mod_rewrite all to index.php в одной среде
- 15. background image to cover all page
- 16. Phabricator auto backup all diffusion to BitBucket
- 17. Service Stack Intercept All Http To Service
- 18. Broadcasting To All Clients В приложении WCF
- 19. autotools: no rule to make target all
- 20. "GRANT ALL TO роли" в SQL Server
- 21. Отправить сообщение от Server to All Clients
- 22. Использование Left Join To Get All Dates
- 23. Convert All mysql Text to ascii form
- 24. Push all non-'0 'to front
- 25. Android Capture All Audio Going to Speakers
- 26. redirect 301 all trafic to homepage
- 27. using pstack to print all threads stacktrace
- 28. Dump All XPaths
- 29. Использование $ input-> all() вместо Input :: all() Laravel-5
- 30. Поведение оператора Python all()