需要关于rabbitmq的推荐

时间:2019-05-31 18:03:17

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

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

2 个答案:

答案 0 :(得分:0)

聊天应该是近乎实时的应用程序,有多种方法可以对此类事物进行建模。首先,您可以使用HTTP poolingHTTP long pooling,但是不久前在那里引入了新的应用程序级协议-web socket。连同Stomp messages对您来说将是一件好事。 Here,您可以查看一个简短的示例。现成的example

也支持向特定用户发送消息

答案 1 :(得分:0)

1

要将消息发送到特定的套接字,可以使用roomsio.to(room).emit(msg)。每个套接字都是房间的一部分,其名称与套接字ID相同。

2

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