今天在看node.js实战(吴海星 译)的时候,里面有段代码
io.sockets.clients(room)
这是什么意思?我在官方文档里也没找着.clients
谁能帮我解释一下啊?
列出页数,行数撒。不晓得有没有上线文
io.sockets.clients(room)
是以前的了. 意思应该是列出在线的客户端数量
现在是io.sockets.sockets.length
新版本的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}); }
@xuanjinliang 关于room的方法哪里能找到比较详细的说明呀?官方api例子有点少啊。。。
@qianjiahao http://socket.io/docs/server-api/这个网址是官方的,但说的不是很清晰(个人感觉),我是把 io.sockets.打印出来,看里面有什么对象,去调用,发现里面有adapter这个对象,还有一个rooms的对象,都是获取有哪些房间,但发现连用户的socket.id都变了存在了rooms里面(感觉是一个bug),所以我自己定义一个变量数组记录现在的房间数据。
@xuanjinliang 恩恩,我在github搜到的项目貌似也是自己在建个对象存在内存里,或者存数据库,貌似也就这么搞了。。。