【问题标题】:Need recommendation regarding rabbitmq需要关于rabbitmq的推荐
【发布时间】:2019-05-31 18:03:16
【问题描述】:

我正在创建一个聊天应用程序,其中我有一个休息 API 和一个 socket.io 服务器,我想做的是用户将消息发送到休息 API,api 将这些消息保存在数据库中,然后发送这些消息到rabbimq队列,然后rabbitmq会将这些消息发送到socket.io,如果接收用户在线,否则消息将存储在队列中,当用户上线时,用户将从队列中检索这些消息但是我想以whatsapp之类的方式实现这一点,消息将针对特定用户,并且用户只会收到那些针对他们的消息,即我不想广播消息我只希望特定用户接收这些消息

【问题讨论】:

    标签: node.js express socket.io rabbitmq chat


    【解决方案1】:

    聊天应该是一个近乎实时的应用程序,有多种建模方式。首先,您可以使用HTTP poolingHTTP long pooling,但前段时间那里引入了新的应用程序级协议-web socket。这对你有好处,还有Stomp messagesHere 您可以查看一个简短的示例。并且开箱即用也支持向特定用户发送消息example

    【讨论】:

    • 是的,但是我该如何解决如果用户离线,消息将存储在队列中的问题?
    【解决方案2】:

    1

    要将消息发送到特定的套接字,您可以使用rooms: io.to(room).emit(msg)。每个套接字都是与套接字 id 同名的房间的一部分。

    2

    在通过 socket.io 发送消息之前,我不会等待将消息写入数据库,您的 API 可以同时完成这两项工作。当用户连接时,他们可以从数据库中检索他们的消息,然后在他们的套接字上监听新消息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-05-20
      • 1970-01-01
      • 2010-10-02
      • 1970-01-01
      • 2012-03-19
      • 2014-12-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多