【发布时间】:2020-12-04 07:38:45
【问题描述】:
我正在尝试在 socket.io 中间件中验证 JWT 令牌,并将 JWT 有效负载放入套接字中,以便稍后在通信时访问它,但我无法访问有效负载。
这就是我试图将 JWT 有效负载放入套接字中的方式:
var server = require('http').Server(app); // intantiating the server
var io = require('socket.io')(server);
io.use(async (socket, next) => {
try {
const token = socket.handshake.query.token;
const payload = await jwt.verify(token, process.env.ACCESS_TOKEN_SECRET);
socket.user_id = payload.user_id;
next();
} catch (err) {
next(err);
}
});
之后我可以在这里访问 user_id
io.on("connection", (socket) => {
console.log("Connected: " + socket.user_id); // works
socket.on("disconnect", () => {
console.log("Disconnected: " + socket.user_id); // works
});
});
但在这里我无法访问 user_id:
io.of('/chatroom').on('connection', function(socket) {
socket.on('join', function() {
console.log(socket.user_id) // null
})
})
如何在 join 事件中获取 user_id 的值?
【问题讨论】:
标签: node.js sockets socket.io jwt