node.js - 在客户端操作后公开 socket.io 监听器

标签 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”。

最佳答案

您可以创建一个 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);
});

关于node.js - 在客户端操作后公开 socket.io 监听器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31850299/

相关文章:

javascript - 使用Socket.IO传输的文件对象变成 'ArrayBuffer'?

node.js - 替换文档不得包含原子运算符

node.js - i18n 如何获取有关该语言的 cookie 信息

node.js - npm 在 Windows 上失败

javascript - socket io, node js, 将图像/文件从服务器发送到客户端的简单示例

node.js - Node : Automatically refresh browser on file change

node.js - 为什么 async.js 中 waterfall 和 series/parallelLimit(1) 之间不一致?

node.js - Knex 迁移不创建表

javascript - `socket` TypeError : task is not a function - node. js async.js 上缺少错误处理程序

php - 如何允许其他网络连接到服务器Node.js套接字IO