gpt4 book ai didi

node.js socket.io room 用户总数

转载 作者:太空宇宙 更新时间:2023-11-03 23:40:49 24 4
gpt4 key购买 nike

我正在尝试计算特定房间中的用户总数,并将其广播给该房间中的所有人。

这是我所拥有的,但出现错误:

var clients = io.sockets.clients(cc.lowerCase(data.roomname)).length;
io.sockets.in(cc.lowerCase(data.roomname)).emit('updatetotal', { total: clients });

错误:

TypeError: Object #<Namespace> has no method 'clients'

谢谢。

最佳答案

自 socket.io 1.0 起,其 API 发生了显着变化,因此旧代码可能无法工作。

要获取房间中的客户数量,您可以使用此函数:

var getUsersInRoomNumber = function(roomName, namespace) {
if (!namespace) namespace = '/';
var room = io.nsps[namespace].adapter.rooms[roomName];
if (!room) return null;
var num = 0;
for (var i in room) num++;
return num;
}

或更简洁地说:

var getUsersInRoomNumber = function(roomName, namespace) {
if (!namespace) namespace = '/';
var room = io.nsps[namespace].adapter.rooms[roomName];
if (!room) return null;
return Object.keys(room).length;
}

该函数需要两个参数:

  • 房间名称
  • 命名空间(可选)默认 = '/'

要向该房间的用户发送消息,只能使用.to方法:

io.to(yourRoomName).emit('updatetotal', { total: getUsersInRoomNumber(yourRoomName) });

关于node.js socket.io room 用户总数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24108833/

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