【问题标题】:accessing other socket inside the socket.on('connection') in socket.io在 socket.io 中访问 socket.on('connection') 内的其他套接字
【发布时间】:2015-04-15 22:48:13
【问题描述】:

我是 node.js 和 socket.io 的新手。

如何访问 socket.on('connection') 中的其他套接字? 这是我的服务器端代码:

服务器端index.js

io.sockets.on("connection", function (socket) {

    socket.on("tree", function(fruit){
        var fruit = "strawberry";
        console.log(fruit); // result: strawberry
    });

    socket.on("drink", function(juice){
        //How to access var fruit here? (strawberry)
    });

};

感谢您的帮助..

【问题讨论】:

    标签: javascript node.js socket.io


    【解决方案1】:

    如果您希望某些数据(例如头像)在收到后可用于未来的事件,那么您必须将该数据保存在服务器中的某个位置,并以您知道哪条数据的方式保存与哪个连接。

    有无数种方法可以构造它,从将其保存到套接字上的属性,到将其保存为用户名映射 --> 用户数据,再到将其保存在数据库中。一般的想法是,当您收到它时将其保存在某个地方,以便将来检索数据以用于将来的某些事件,您可以在该数据结构或数据库中找到它。

    来自您的代码示例:

    io.sockets.on("connection", function (socket) {
    
        var savedFruit;
        socket.on("tree", function(fruit){
            savedFruit = fruit;
            console.log(fruit); // result: strawberry
        });
    
        socket.on("drink", function(juice){
            // You can access the savedFruit variable here which will only have a
            // value if the "tree" message has already been received.
        });
    
    });
    

    【讨论】:

    • 嗨 jfriend00,是的,我已经为此使用了数据库。这只是示例代码。主要问题仍然是“如何在 socket.io 中访问 socket.on('connection') 中的其他套接字”干杯...
    • @Kiky - 其他套接字是什么意思?还有什么插座?您的示例代码询问如何访问头像,而不是如何访问另一个套接字。
    • jfriend00,好吧..这与头像无关。我更新我的问题。希望你现在明白了。对不起..因为我对javascript和socket.io真的很陌生。谢谢你..
    • @Kiky - fruit 的答案仍然相同。您将该值保存在其他事件处理程序可以访问的某个位置。在您的特定情况下,您可以重命名 fruit 变量以不与您的函数参数冲突,并将声明移动到现在声明它的上方一个范围级别,以便它可用于两个事件处理程序。
    • jfriend00...嗯..你能用你的示例代码回答吗?谢谢你指导我...
    猜你喜欢
    • 2013-04-25
    • 2018-07-15
    • 1970-01-01
    • 2018-04-29
    • 1970-01-01
    • 1970-01-01
    • 2014-04-19
    • 2015-10-06
    • 2015-12-26
    相关资源
    最近更新 更多