今天在看node.js实战(吴海星 译)的时候,里面有段代码
io.sockets.clients(room)
这是什么意思?我在官方文档里也没找着.clients
谁能帮我解释一下啊?
6 回复
新版本的socket.io已经没有clients这个对象,可以试一下以下的方法! var usersInRoom = io.sockets.adapter.rooms[room]; var length = Object.keys(usersInRoom).length; if(length > 1){ var usersInRoomSummary = 'Users currently in ' + room + ':’; var array = []; for(var index in usersInRoom){ array.push(nickNames[index]); } usersInRoomSummary += array.join(“,”) + '.’; socket.emit('message’,{text:usersInRoomSummary}); }
@qianjiahao http://socket.io/docs/server-api/这个网址是官方的,但说的不是很清晰(个人感觉),我是把 io.sockets.打印出来,看里面有什么对象,去调用,发现里面有adapter这个对象,还有一个rooms的对象,都是获取有哪些房间,但发现连用户的socket.id都变了存在了rooms里面(感觉是一个bug),所以我自己定义一个变量数组记录现在的房间数据。