Create a list of Connected Clients using socket.io

前端 未结 2 1385
野性不改
野性不改 2020-12-24 09:36

Here are 2 related questions. Posting them together makes more sense.

Question 1

I have a node.js app which emits an event out to all client

相关标签:
2条回答
  • 2020-12-24 10:24

    You will need to keep track of the connected clients yourself. The simple way to do that would be to use an array:

    var clients = [];
    
    io.sockets.on('connect', function(client) {
        clients.push(client); 
    
        client.on('disconnect', function() {
            clients.splice(clients.indexOf(client), 1);
        });
    });
    

    Then you can references that clients array on the server wherever you need to, in your ready event handler or whatever. Something like:

    io.sockets.on('connection', function(socket) {
        socket.on('ready', function() {
            // UPDATE N rows with client_id in column checkout.
            // Then SELECTS * from table where checkout = client_id
            clients.forEach(function(client, index) {
                var client_id = index; // Just use the index in the clients array for now
                getListings(client_id, function(listings) {
                    socket.emit('job', listings);   // send jobs
                });
            });
        });
    });
    
    0 讨论(0)
  • 2020-12-24 10:25

    Socket.io provides you with a public api for that, so instead of hacking something up like Bryan suggest you can use:

    io.sockets.clients()
    

    That will returns an array of all connected clients.

    If you want all clients connected to a certain namespace:

    io.of('/namespace').clients()
    

    But you can even filter it even more.. if you want to have all sockets in a room:

    io.sockets.clients('room name here as first argument')
    

    Will return a array of connected sockets for the room room name here as first argument

    0 讨论(0)
提交回复
热议问题