Asa*_*sad 3 chat node.js socket.io angular
我正在在NodeJs的应用程序中使用socket.io和客户端的angular 4 进行一对一的聊天。我是socket.io和angular 4的新手,我想问问对此有什么更好的方法,例如,用户是要向特定用户发送消息还是要向一组用户发送消息。
根据我的报告,我应该保留所有已连接用户的obj,并且该obj包含该用户的套接字ID及其用户名(email或whatever),以便如果某个用户想要向某人发送消息,则我们需要该用户名称,我们可以通过他的用户名访问他的ID。还是有什么解决办法呢?我应该在哪里保留用户和套接字ID 全局变量或数据库的 obj ?
一对一聊天和群聊非常相似。如果我们在socket.io https://socket.io/docs/rooms-and-namespaces/#中使用房间。
在一对一中,只有2个用户位于同一房间。在多人聊天的情况下,同一房间可以容纳2个以上的人。
因此,当某人发送消息时,他们将消息发送到他们所属的房间并希望与其聊天,而不是将其发送给各个用户。然后,该房间中的每个人,无论是一个人还是多个人都将收到它。
-Node.js
将客户加入房间
io.on('connection', function(client){
     client.join(conversation._id)
});
向房间发送消息
   client.broadcast.to(conversation_id).emit('message:send:response', {
       msg: res.msg,
       conversation_id: res.data._id
  });
-角度
听发出的消息
getMessages(conversation_id) {
    let observable = new Observable(observer => {
        this.socket.on('message:send:response', (chat) => {
            if (chat.conversation_id === conversation_id) {
                observer.next(chat.msg);
            }
        })
    });
    return observable;
}
| 归档时间: | 
 | 
| 查看次数: | 6195 次 | 
| 最近记录: |