socket.io 요청을 승인하면 사용자를 필터링 할 수 있습니다.
당신은 passportSocketIO에서 socket.io
passport.serializeUser(function (user, done) {
done(null, user.id);
});
passport.deserializeUser(function (id, done) {
User.findById(id, function (err, user) {
done(err, user);
});
});
봐와 속성에 액세스하기 위해, 직렬화 사용자 개체를 직렬화해야합니다. 이와 같이 들어오는 socket.io 요청에 권한을 설정할 수 있습니다.
sio.set("authorization", passportSocketIo.authorize({
key: 'express.sid', //the cookie where express (or connect) stores its session id.
secret: 'my session secret', //the session secret to parse the cookie
store: mySessionStore, //the session store that express uses
fail: function(data, accept) { // *optional* callbacks on success or fail
accept(null, false); // second param takes boolean on whether or not to allow handshake
},
success: function(data, accept) {
accept(null, true);
}
}));
그런 다음 '연결'콜백으로 사용자를 필터링 할 수 있습니다.
sio.sockets.on("connection", function(socket){
console.log("user connected: ", socket.handshake.user.name);
//filter sockets by user...
var userProperty = socket.handshake.user.property, //property
// you can use user's property here.
//filter users with specific property
passportSocketIo.filterSocketsByUser(sio, function (user) {
return user.property=== propertyValue; //filter users with specific property
}).forEach(function(s){
s.send("msg");
});
});
안녕하세요, 귀하의 질문을 바꿔보십시오, 텍스트의 벽으로 읽기가 어렵습니다. –