java - 如何在套接字io中使用用户名获取用户ID

标签 java android node.js sockets socket.io

我正在使用 socket io 进行聊天应用。我这边用的是安卓。我想获得特定的 id。当我发送用户名时。我想显示用户 ID。我使用了如下所示。

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

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

最佳答案

socket.id 给出了socket(client)的唯一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);
});

关于java - 如何在套接字io中使用用户名获取用户ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43464617/

相关文章:

java - 将 String obj 添加到列表中的列表中

php - Apache + socketIO 失败

java - 尝试在 jsff 片段中显示表时访问被拒绝?

java - Spring云函数Cosumingrabbitmq队列-Dispatcher没有 channel 订阅者

android - ffmpeg 编码音频中的持续时间和比特率不正确

java - Android NavigationView 菜单切换按钮

javascript - 如何在 Node js 中写入 xls 文件和流以响应

node.js - 在使用带有多直流设置的 Express cassandra 时需要帮助

java - 如何删除 jTextArea 的第一行

java - 条目 fakeoutputdirectory=null 中出现错误 null 值?