如何使用 Node.JS 通过标识符跟踪用户

How to keep track of users by identifier using Node.JS

我正在收听一个小型 socket.io 聊天应用程序。每次用户加入时,服务器都会发出一条消息,其中包含用户名和当场生成的 ID。但是,当用户发送消息时,服务器只广播带有userid 的消息,没有用户名。此代码片段显示了当用户连接并发送消息时触发的事件。

    socket.on('chat_new_user', (data) => {
        var json = JSON.parse(data);
        console.log('new user!')
        console.log(json.userid)
        console.log(json.username)

    });
    socket.on('chat_new_message', (data) => {
        var json = JSON.parse(data);
        console.log(`${json.userid} - new message!`)
        console.log(json.msg)

我的问题是,即使我在消息中只有用户 ID,如何在他发送新消息时将用户名记录到我的控制台?json?

您可能需要将用户数据存储在数组中

    const users = []
    
    socket.on('chat_new_user', (data) => {
        var json = JSON.parse(data);
        console.log('new user!')
        console.log(json.userid)
        console.log(json.username)
        users.push({ id: json.userid, username: json.username })
    });
    socket.on('chat_new_message', (data) => {
        var json = JSON.parse(data);
        console.log(`${json.userid} - new message!`)
        const user = users.find((user) => user.id === json.userid)
        console.log(json.msg)
        // check whether `user` exit
        if (user) {
           console.log(user.username)
        }