请教一个问题, Socket 实时消息转发

2020-01-06 11:33:31 +08:00
 afirefish

要在 MQTT 和 Websocket 转发实时消息,比如客户端通过 MQTT 发送的消息,要实时通过 Websocket 发送到网页。要考虑并发,请教一下有没有好的设计思路。

2547 次点击
所在节点    前端开发
4 条回复
BingoXuan
2020-01-06 12:12:51 +08:00
https://juejin.im/post/5adfe731518825670f7b833d

你够闲的话也可以基于 epoll 自己写一个也可以
afirefish
2020-01-06 16:34:08 +08:00
@BingoXuan 感谢大佬回复,可能是我表述有问题。应用场景是物联网设备通过 mqtt 协议连接并发送数据到服务器,然后服务器转发数据到 web 端(通过 websocket )。这个中间转发过程没有好的思路
BingoXuan
2020-01-06 16:56:39 +08:00
不是啊,你并不需要自己做转发。文中已经有很详细的解释了,这个服务器直接用 Mosquitto 就好了。MQTT 实际还是个消息队列规范,任何客户端实现这个规范后,就可以通过消息队列服务器订阅其他生产者的信息和发布给其他消费者。

1: PC 先通过 websocket 协议和 mosquitto 建立连接,同时订阅主题 A.
2: IOT 设备通过 MQTT 协议和 mosquitto 建立连接。
3: IOT 设备发布主题 A
4: mosquitto 将主题 A 发布到它所有的客户端(无论协议是 MQTT 还是 Websocket ),包括 websocket 客户端,所以 PC 也能收到主题

所以你需要做的是如何分配生产者和消费者。或者你可以考虑使用 HiveMQ,感觉更加简单[官方 demo http://www.hivemq.com/demos/websocket-client/]
afirefish
2020-01-06 17:25:24 +08:00
@BingoXuan 懂你的意思了,感谢大佬!!

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/635408

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX