gpt4 book ai didi

node.js - 讨论 : Best way to implement a chatroom with node. js/socket.io?

转载 作者:搜寻专家 更新时间:2023-10-31 22:46:31 25 4
gpt4 key购买 nike

我并不是在谈论一般的聊天应用程序,而是在谈论聊天室的具体实现。

所以在node.js/socket.io中,我想到了两种做法

  1. 为每个聊天室创建一个数组,向数组中的所有用户广播消息

  2. 向所有用户广播所有消息,在客户的 PC 上确定他们是否属于聊天室,如果是,则接受消息。

1 中的弱点是,最终随着你的扩展,你会用数组对象淹没服务器的内存,而我在我的主机上只使用了大约 80mb。

2 中的弱点是最终向所有人广播的成本很高,并且淹没客户的机器不会让他们开心。

我确信在如何实现聊天室方面有更好的方法,所以这就是我请求你们帮助我的原因。我首先在服务器端寻找性能,然后在客户端寻找性能,并且它必须是可扩展的。

最佳答案

Socket.IO 0.7+ 引入了房间概念。这可能是您正在寻找的东西。

io.sockets.on('connection', function (socket) {
socket.join('room name');

// broadcast the message to everybody in the room
socket.on('chat message', function (data) {
socket.broadcast.to('room name').emit('chat message', data);
});

socket.on('leave room', function (room) {
socket.leave(room);
});
});

因此无需为特定房间的用户管理您自己的数组,socket.io 内置了此功能。

关于node.js - 讨论 : Best way to implement a chatroom with node. js/socket.io?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7480506/

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