简体   繁体   English

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

[英]Emit to specific person by socket.io

I'm using socket.io and passport.js to authenticate people with their Steam accounts. 我正在使用socket.io和Passport.js来通过他们的Steam帐户对人进行身份验证。 I want to be able to send data to specific Steam's ID. 我希望能够将数据发送到特定的Steam的ID。 I'am alredy using 我很讨厌使用

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

to access passport data of passport inside socket.io. 在socket.io中访问护照的护照数据。 I've thought of of storing active sockets in array, then just find one with a proper Steam ID. 我曾考虑过将活动套接字存储在数组中,然后只是找到一个具有正确Steam ID的套接字。 Is there some better solution? 有更好的解决方案吗?

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"});
});

you shoude use this inside express routes. 您应该在快车路线内使用此功能。 Getting data and emitting within express routes is tricky. 在快速路由中获取数据并进行发射非常棘手。 Follow this link to setup socket.io inside express routes How to use socket.io in express routes? 按照此链接在快速路由中设置socket.io 如何在快速路由中使用socket.io?

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM