gpt4 book ai didi

node.js - 更好的一对一和群聊方法 nodejs Socket.io

转载 作者:太空狗 更新时间:2023-10-29 18:13:02 24 4
gpt4 key购买 nike

我正在使用 socket.ioangular 4 NodeJs 应用程序中实现一对一和群聊强>在客户端。我是 socket.io 和 angular 4 的新手。我想问一下什么是更好的方法,例如,如果用户想向特定用户发送消息或者它想向用户组发送消息。

根据我的 Rnd,我是否应该保留所有已连接用户的 obj,并且该 obj 包含该用户的套接字 ID 及其用户名(电子邮件或其他任何名称),以便如果某个用户想向某个用户发送消息,我们应该需要他的用户名,我们可以通过他的用户名访问他的id。或者除此之外还有其他解决方案吗?我应该在哪里保存用户对象和套接字 ID 全局变量或数据库

最佳答案

一对一和群聊很相似。如果我们在 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
});

- Angular

收听发出的消息

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;

}

关于node.js - 更好的一对一和群聊方法 nodejs Socket.io,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46891413/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com