imp*_*335 44 websocket node.js socket.io
我终于让socket.io正常工作,但我遇到了一个奇怪的问题.
我不确定这是不是最好的方法,但我使用的是:
io.sockets.clients().length
Run Code Online (Sandbox Code Playgroud)
这将返回连接到我的服务器的客户端数量.问题是在用户连接和断开连接后,数量开始保持高于应有的水平.
例如,如果我连接并询问我的朋友,数字会上升,这是正确的.但是当我们开始断开连接并重新连接时,数量不会减少.
我在vmware ubuntu服务器上运行node.js和sockets.io服务器.
有谁知道为什么这是或有更好的方法来找出有多少人连接到服务器?
Mod*_*ody 59
以防有人在使用socket.io版本1.0时访问此页面
您可以从中获取连接的客户端数量
socketIO.engine.clientsCount
Run Code Online (Sandbox Code Playgroud)
需要一个答案,上面的内容不适用于socket.io的新版本
dri*_*hev 40
这有一个github问题.问题是每当有人断开连接时socket.io不会从数组中删除(拼接),而只是将值设置为"null",所以实际上你的数组中有很多空值,这会使你的客户端( ).length大于你现实中的连接.
您必须管理一种不同的方式来计算您的客户,例如
socket.on('connect', function() { connectCounter++; });
socket.on('disconnect', function() { connectCounter--; });
Run Code Online (Sandbox Code Playgroud)
这是一个嗡嗡声,为什么socket.io背后的人留下了类似的东西,但更好的解释在github问题,我发布作为链接!
Lor*_*ran 28
我已经找到了在版本1.3.7中找到它的方法.有三种方法如下:
io.engine.clientsCountio.sockets.sockets.lengthObject.keys(io.sockets.connected).length希望这些可以帮助有同样问题的人.:)
raf*_*226 13
使用 socket.io 2.2.0 更容易:
io.on('connection', function (socket) {
console.log( socket.client.conn.server.clientsCount + " users connected" );
});
Run Code Online (Sandbox Code Playgroud)
干杯
Tri*_*IER 10
使用命名空间使用 Socket.IO v2.3.0 进行测试,我发现 4 个位置具有 clientCounts 属性(Server每次可能都是同一个对象):
const socketio = require('socket.io');
const io = socketio(http_server);
const io_namespace = io.of('/foobar');
io_namespace.on('connection', function(socket)
{
console.log(socket.conn.server.clientsCount);
console.log(socket.server.engine.clientsCount);
console.log(io.engine.clientsCount);
console.log(io_namespace.server.engine.clientsCount);
});
Run Code Online (Sandbox Code Playgroud)
小智 6
连接用户数与 socket.io 版本 - 1.3.7
const io = require("socket.io");
io.on('connection', (socket) => {
console.log(io.sockets.server.httpServer._connections); //output in number
// or
console.log(io.sockets.server.engine.clientsCount); //output in number
});
Run Code Online (Sandbox Code Playgroud)
在花了相当多的时间阅读 Stack Overflow 帖子并多次查看套接字对象后,我发现要获取已连接的套接字数量,您需要执行以下操作:
// io is the 'require'd socket.io module
io.on("connection", function (socket) {
console.log("The number of connected sockets: " + socket.adapter.sids.size);
});
Run Code Online (Sandbox Code Playgroud)
我已经在 上测试了这个非常简单的解决方案socket.io@4.0.1。
为什么在总是可以过滤数组时使用(隐式全局)变量,这是通过调用clients()方法返回的.
function filterNullValues (i) {
return (i!=null);
}
io.sockets.clients().filter(filterNullValues).length;
Run Code Online (Sandbox Code Playgroud)
我目前正在使用 Socket.io v1.3.6 并发现它有效。它在用户连接和断开连接时给出准确的数字:
io.sockets.sockets.length
Run Code Online (Sandbox Code Playgroud)
像这样:
var io = require('socket.io').listen(server);
io.on('connection', function(socket) {
console.log(io.sockets.sockets.length);
socket.on('disconnect', function() {
console.log(io.sockets.sockets.length);
});
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
59731 次 |
| 最近记录: |