【问题标题】:How to get user id using username in socket io如何在socket io中使用用户名获取用户ID
【发布时间】:2017-09-13 20:19:15
【问题描述】:

我正在使用套接字 io 进行聊天应用程序。我这边使用的是安卓。我想获得特定的ID。当我发送用户名时。我想显示用户 ID。我已经使用了下图。

 const userId = user.userId;
 const user1 = usernames[userId];
 console.log("user1 :"+user1);

但它只显示用户名如何显示用户 ID 或如何获取用户 ID。请帮帮我?

【问题讨论】:

    标签: java android node.js sockets socket.io


    【解决方案1】:

    socket.id 给出了套接字(客户端)的唯一 ID,您可以通过多种方式存储它

    • 从客户端向服务器发送用户名和socket.id

    客户端:

    var socket = io.connect();
    data = {name: userName, userId: socket.id};
    socket.emit('setSocketId', data);
    

    服务器端:

    var userNames = {};
    socket.on('setSocketId' function(data) {
        var userName = data.name;
        var userId = data.userId;
        userNames[userName] = userId;
    });
    
    • 您也可以在套接字连接时在服务器端执行此操作,但您必须为用户提供一些默认名称,然后向客户端发出默认名称

    服务器端:

    var userNames = {};
    var getDefaultName = function(){
        var cnt = 0;
        for (user in names) {
            cnt+=1;
        }
        return 'User' + String(cnt);
    };
    io.sockets.on('connection', function(socket) {
        name = getDefaultName();
        userNames[name] = socket.id;
        data = {name: name};
        socket.emit('initName', data);
    });
    

    【讨论】:

      【解决方案2】:

      console.log("user1 :"+user1+" id:"+userId);

      【讨论】:

      • 当你的“userId”是用户名时,你想显示什么样的ID?您是否查看了底层数据库以检查是否有这样的 ID?什么是数据库,你在持久层使用什么
      • 在socket io中每个用户都有一个独特的。对于私有,这个唯一的 id 正在使用。我想要那个身份证。
      • var socket = io(); socket.on('connect', function(){ var sessionid = socket.io.engine.id; ... });
      • 我把用户名放在哪里。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-07-08
      • 2021-05-07
      • 2014-12-18
      • 1970-01-01
      • 2012-02-26
      • 2019-05-03
      • 2020-03-01
      相关资源
      最近更新 更多