用户加入房间并使用 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。房间的功能没有问题。我只想将两个用户的用户名发送给对方。如何??我无法将第一个用户连接的用户名发送给在第一个用户之后连接的第二个用户。
但是当另一个用户连接并加入同一个房间时,它能够将其详细信息发送到连接的套接字。但是这个socket并不能得到这个socket之前连接的socket的详细信息,这是合理的,可以理解的。
有谁知道这个新连接的套接字将如何使用 passport.socketio 获取连接的套接字的用户名?