代码之家  ›  专栏  ›  技术社区  ›  Sachin Shah

如何将套接字发送到特定的套接字连接?

  •  0
  • Sachin Shah  · 技术社区  · 7 年前

    在我的节点应用程序中,

    socket.on('test', function (req) {
       controller.test(socket, req, 'test');
    })
    

    var userSockets = []; //Used to store all connected users data.
    
    userSockets[user.id] = socket;  // Storing whole socket object.
    // E.x: userSockets[14] = socket; // Stored like this.
    

    函数获取所有套接字数据

    getUserSocket() {
        return userSockets;
    }
    

    现在我需要发送到特定的套接字,我已经尝试过了,但是我得到了一个错误。

    let allUserSocketListData = databaseHelper.getUserSocket();
    
    allUserSocketListData[result.data[0].id].emit('response' , data);
    // E.x: allUserSocketListData[14].emit('response' , data);
    

    错误:

    .emit() is not a function. 
    

    更新

    我有一个函数,我存储所有用户的套接字数据。

    validateUser(user, socket) {
        ...  // My some code
        userSockets[user.id] = socket;                            
    }
    
    0 回复  |  直到 7 年前
        1
  •  0
  •   devio    7 年前

    名称空间和文件室是为这个特定的原因而构建的,但是当您需要一些不需要额外代码的方便的东西时,直接发送emit就可以了。 下面是一个快速的方法:

    let socketIds = []
    socketServer.on("connection",(socket)=>{
        socketIds.push(socket.id)
        socket.emit("message", "hey")
    })
    

    2: 现在如果你想在 例如,您应该首先检查它是否已经注册并继续发射。

    if (socketServer.sockets.connected.hasOwnProperty(socketIds[0])){
        socketServer.sockets.connected[socketIds[0]].emit("message", "hey again")
    } else {
        console.error("Error: Wrong Id")
    }
    
    推荐文章