我正在创建一个聊天应用程序,其中有一个REST API和一个socket.io服务器,我要做的是用户将消息发送到REST API,API将这些消息保留在数据库中,然后将其发送消息发送到rabbimq队列,然后Rabbitmq会将这些消息发送到socket.io,如果接收用户在线,否则该消息将存储在队列中,并且当用户上线时,用户将从队列中撤消这些消息,但是我想要以类似whatsapp的方式实现此功能,这些消息将针对特定用户,并且该用户只会收到对他们有意义的消息,即我不想广播消息,我只希望特定用户接收这些消息>
答案 0 :(得分:0)
聊天应该是近乎实时的应用程序,有多种方法可以对此类事物进行建模。首先,您可以使用HTTP pooling
,HTTP long pooling
,但是不久前在那里引入了新的应用程序级协议-web socket
。连同Stomp messages
对您来说将是一件好事。 Here,您可以查看一个简短的示例。现成的example
答案 1 :(得分:0)
1
要将消息发送到特定的套接字,可以使用rooms:io.to(room).emit(msg)
。每个套接字都是房间的一部分,其名称与套接字ID相同。
2
在通过socket.io发送消息之前,我不会等待消息被写入数据库,您的API可以一次完成这两个操作。当用户连接时,他们可以从数据库中检索消息,然后在套接字上侦听新消息。