关于socket.io的问题
发布于 10 年前 作者 QuoniamYIF 5869 次浏览 最后一次编辑是 8 年前 来自 问答

今天在看node.js实战(吴海星 译)的时候,里面有段代码 io.sockets.clients(room) 这是什么意思?我在官方文档里也没找着.clients 谁能帮我解释一下啊?

6 回复

列出页数,行数撒。不晓得有没有上线文

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搜到的项目貌似也是自己在建个对象存在内存里,或者存数据库,貌似也就这么搞了。。。

回到顶部