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)
});
Run Code Online (Sandbox Code Playgroud)
向房间发送消息
client.broadcast.to(conversation_id).emit('message:send:response', {
msg: res.msg,
conversation_id: res.data._id
});
Run Code Online (Sandbox Code Playgroud)
-角度
听发出的消息
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;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6195 次 |
| 最近记录: |