通过socket.io发送给特定的人

Emit to specific person by socket.io

我正在使用 socket.io 和 passport.js 来验证用户的 Steam 帐户。我希望能够将数据发送到特定的 Steam ID。我已经在使用

io.use(function(socket, next) {
     session(socket.handshake, {}, next);
});

访问 socket.io 中护照的护照数据。我想过将活动套接字存储在数组中,然后找到一个具有适当 Steam ID 的套接字。有没有更好的解决方案?

var steamUsers= {};

io.sockets.on("connection",function(socket){
   //from passport
   socket.steamid= steamid;

   //store socket for every user
   steamUsers[socket.steamid] = socket;

   //emit from their socket
   steamUsers[steamid].emit('private',{msg:"private message"});
});

你应该在快速路线内使用这个。在快速路线中获取数据和发射是很棘手的。按照此 link 在快速路线 How to use socket.io in express routes?

中设置 socket.io