V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
afirefish
V2EX  ›  前端开发

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

  •  
  •   afirefish · 2020-01-06 11:33:31 +08:00 · 2567 次点击
    这是一个创建于 1812 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    4 条回复    2020-01-06 17:25:24 +08:00
    BingoXuan
        1
    BingoXuan  
       2020-01-06 12:12:51 +08:00   ❤️ 1
    https://juejin.im/post/5adfe731518825670f7b833d

    你够闲的话也可以基于 epoll 自己写一个也可以
    afirefish
        2
    afirefish  
    OP
       2020-01-06 16:34:08 +08:00
    @BingoXuan 感谢大佬回复,可能是我表述有问题。应用场景是物联网设备通过 mqtt 协议连接并发送数据到服务器,然后服务器转发数据到 web 端(通过 websocket )。这个中间转发过程没有好的思路
    BingoXuan
        3
    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
        4
    afirefish  
    OP
       2020-01-06 17:25:24 +08:00
    @BingoXuan 懂你的意思了,感谢大佬!!
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1691 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 16:21 · PVG 00:21 · LAX 08:21 · JFK 11:21
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.