【问题标题】:socket.io onconnect send extra datasocket.io onconnect 发送额外数据
【发布时间】:2016-04-12 19:04:21
【问题描述】:

我正在使用 socket.io,目前一切都很好,但是我想将数据发送到特定的客户端。但是我不确定如何获取 sed 客户端套接字 ID。我想在连接时发送额外的数据。

我试过了:

if (steamID != "" && steamName != "") {
    socket.emit("username", { 
        socketData: {
            name: steamName
        }
    });
}

和服务器端:

socket.on('username', function (data) {
    socket.username = data.socketData.name;
});

clients[socket.id] = {
    id: socket.id,
    ip: socket.request.connection.remoteAddress,
    name: socket.username
    cons
}

console.log(clients);

但是我只是得到名字:未定义

【问题讨论】:

    标签: node.js socket.io


    【解决方案1】:

    您在代码的哪一部分检查name 属性的值?您提供的代码将首先将 undefined 的值分配给 clients[socket.id].name,因为尚未定义 socket.username。当调用on("username") 事件时,它将为socket.username 分配一个值。如果你在消息回调中添加console.log(data),你会得到什么?

    【讨论】:

    • 我已经编辑了问题,console.log() 就在客户之后。现在将检查回调。
    • 将 console.log(data) 放入 socket.on('username', function (data) { 给出:{ socketData: { name: 'K1LzR' } } 这是我的用户名。跨度>
    • @Matt 那么这是你的问题。您首先必须等到回调被调用,然后使用/定义 clients[socket.id] 对象
    • 我添加了客户端[socket.id].name = socket.username;到 socket.on('username' ,然后当我在脚本中进一步调用 console.log(clients) 时,当 socket.on 肯定被调用时它工作了。谢谢
    • @Matt 不客气 :) 你是否也可以接受正确的答案,因为这解决了你的问题?
    猜你喜欢
    • 2016-05-25
    • 2023-01-07
    • 2014-06-04
    • 2011-09-11
    • 2013-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-10
    相关资源
    最近更新 更多