如何使用socket.io连接到房间的用户获取在加入房间之前发送到房间的数据

时间:2018-03-24 04:22:20

标签: node.js mongodb socket.io passport.socketio

用户加入房间并使用passport.socketio将其用户名发送到房间。在socket.request.user.user_id的帮助下,我能够获取套接字的user_id并从数据库中获取与user_id相对应的用户名。

 function onNewplayer_GK (data) {
var room_id = find_Roomid_GK(); 
var room = room_List_GK[room_id]; 
//join the room
this.room_id = room_id;
this.join(this.room_id);
console.log("created new room with id " + room_id);
console.log("created new player with id " + this.id);
 var user_id = this.request.user.user_id;
db.collection('user-details').findOne({_id:ObjectId(user_id)},(err,result)=>{
    var results = JSON.stringify(result);
    var results = JSON.parse(results);
    console.log('name is'+ (results.user_name));
    var name = results.user_name;
    this.emit('myname',{
        my_name:name
    });
    this.broadcast.to(room_id).emit('enemyname',{
        enemy_name:name
    });
});

 io.on('connection',(socket)=>{
console.log('user connected ' + socket.id);
// listen for new player
// socket.on("new_player", onNewplayer);
socket.on('new_player_history',onNewplayer_history);

socket.on('new_player_GK',onNewplayer_GK);

find_Roomid_GK()是一个查找未填充房间的函数,如果填充它将创建一个房间并将其分配给room_id。房间的功能没有问题。我只想将用户的两个用户名发送给对方。怎么样??我无法将第一个用户连接的用户名发送给第一个用户连接后的第二个用户。

但是当另一个用户连接并加入同一个房间时,它可以将其详细信息发送到连接的套接字。但是这个套接字无法获得在此套接字之前连接的套接字的详细信息,这足以理解。

有没有人知道这个新连接的套接字如何使用passport.socketio获取连接套接字的用户名?

0 个答案:

没有答案