客户端操作后公开socket.io侦听器

时间:2015-08-06 08:13:05

标签: node.js socket.io

有没有办法在执行命令后为某些客户端设置socket.io侦听器?例如:

socket.on('setupServer', function (data) {
    console.log("setupServer called");

    // Now set up listeners
    socket.on('serverAction', function (data) {
        console.log('Listener for clients calling setupServer');
    });

});

在上面,客户端已连接并已向node.js服务器发出'setupServer'命令。服务器现在从特定客户端侦听“serverAction”。如果不首先调用'setupServer',其他客户端将无法使用'serverAction'。

1 个答案:

答案 0 :(得分:0)

您可以创建room并验证用户的某些数据,然后将这些用户加入该会议室,然后向该会议室中的用户发送一些事件。

像这样。

<强> server.js

var io = require('socket.io')(server);

io.on('connection',function(socket){

socket.emit('auth_user')

socket.on('response_from_user',function(data){
    if(data.name === "Blashadow"){

        //join that user to the room
        socket.join('/room',function(){

            //emit some custom event to users in that room
            io.in('/room').emit('custom_event_room', { info: 'new used connected from room' });
            });    
        }
    });
});

<强> client.html

var socket = io('localhost');

socket.on('auth_user', function (data) {
    socket.emit('response_from_user', { name : "Blashadow" });
});

socket.on('custom_event_room',function(data){
    console.log(data);
});