【问题标题】:nodejs socket.io server emit with an answer of server onnodejs socket.io 服务器发出服务器的答案
【发布时间】:2014-06-22 18:44:51
【问题描述】:

如果我从服务器端发出,代码只能在客户端以“on”响应?

我的问题是,如果用户登录,他会得到一个特定的用户列表作为对象。

假设 A 登录,这将获得一个自定义对象,其中包含用户 B、G 和 X 的内容。 现在的问题是,用户 B、G 和 X 也都有一个自定义对象。 当然,一切都在服务器端。

现在我只尝试了一个服务器端发出来发送给这些用户。这个发出的也应该在服务器端接收到。但是,它不起作用。

我试过这样的

io.sockets.on('connection', function(socket){
    socket.on('login', function(){
            for(var key in specific_object){
                specific_object[key].emit('add user');
            }
    });

    socket.on('add user', function(data){
            console.log("now please....");
    });
 });

希望有人可以帮助我:)

更新

.jpg)

【问题讨论】:

  • 服务器端套接字不能在服务器上发出另一个套接字。同样,客户端套接字不能发出另一个客户端套接字。你想做什么我还不清楚。请添加更多您想要发出并正确解释的服务器和客户端套接字。
  • Picture。我添加了问题的图片。
  • 我得到的是你想要发出 - 来自“登录”的“adduser”,两者都是服务器端套接字。如果是,那么您不能从另一个服务器的套接字发出在服务器端定义的套接字。你有一个答案,它可能会对你有所帮助。

标签: node.js socket.io emit


【解决方案1】:

如果我理解正确,您可以创建一个函数并从loginadd user 事件中调用它:

function addUser(socket, data) {
    console.log("now please....");
    //do something with socket and passed data
}

io.sockets.on('connection', function(socket){
    socket.on('login', function(){
        for(var key in specific_object){
            //specific_object[key].emit('add user');
            addUser(specific_object[key], {your: 'data'});
        }
    });

    socket.on('add user', function(data){
        addUser(socket, data);
    });
});

【讨论】:

    猜你喜欢
    • 2016-08-20
    • 2017-06-20
    • 2020-04-09
    • 2011-09-22
    • 2014-05-04
    • 2019-03-15
    • 1970-01-01
    • 2013-03-22
    • 1970-01-01
    相关资源
    最近更新 更多