I finally got socket.io to work properly, but I have encountered a strange problem.
I am not sure if this is the best way, but I am using:
io.sockets.clients().length
This returns the number of clients connected to my server. The problem is after a few connects and disconnects of users, the number starts to stay higher than it should be.
For instance, if I connect and ask my friends to, the number goes up which is correct. But when we start to disconnect and reconnect the number does not decrease.
I am running the node.js and sockets.io server on a vmware ubuntu server.
Does anyone know why this is or has a better method for finding out how many people are connected to the server?
I don't see any mention of multi core apps so I'm just gonna add that since I am using multiple cores ( clusters ) I wasn't able to get the right number of sockets consistently on the client side, so I ended up saving them to my mongo instance and it is quite consistent and accurate. With this approach I can view my socket connections in style via the browser :).
Mongoose schema :
Usage:
How many do I have ?
NOTE* I don't like using empty query objects ( {} ) so I just used { "socket" : 1 } as a dummy instead
I am currently using Socket.io v1.3.6 and have found that this works. It gives an accurate number when users connect and when they disconnect:
Like so:
Also take a look into:
io.sockets.manager.connected
It's a clean list of key value pairs (socket id and connection state?)
Why use an (implicit global) variable when you could always filter the array, that is returned by calling the clients() method.