इससे कोई फर्क नहीं पड़ता कि टोकन किसी अन्य सर्वर पर बनाया गया था। आप अभी भी इसे सत्यापित कर सकते हैं यदि आपके पास सही गुप्त कुंजी और एल्गोरिथ्म है।
jsonwebtoken
मॉड्यूल के साथ कार्यान्वयन
ग्राहक
const {token} = sessionStorage;
const socket = io.connect('http://localhost:3000', {
query: {token}
});
सर्वर
const io = require('socket.io')();
const jwt = require('jsonwebtoken');
io.use(function(socket, next){
if (socket.handshake.query && socket.handshake.query.token){
jwt.verify(socket.handshake.query.token, 'SECRET_KEY', function(err, decoded) {
if (err) return next(new Error('Authentication error'));
socket.decoded = decoded;
next();
});
}
else {
next(new Error('Authentication error'));
}
})
.on('connection', function(socket) {
socket.on('message', function(message) {
io.emit('message', message);
});
});
socketio-jwt
मॉड्यूल के साथ कार्यान्वयन
यह मॉड्यूल क्लाइंट और सर्वर साइड दोनों में प्रमाणीकरण को बहुत आसान बनाता है। बस उनके उदाहरण देखें।
ग्राहक
const {token} = sessionStorage;
const socket = io.connect('http://localhost:3000');
socket.on('connect', function (socket) {
socket
.on('authenticated', function () {
})
.emit('authenticate', {token});
});
सर्वर
const io = require('socket.io')();
const socketioJwt = require('socketio-jwt');
io.sockets
.on('connection', socketioJwt.authorize({
secret: 'SECRET_KEY',
timeout: 15000
})).on('authenticated', function(socket) {
console.log(`Hello! ${socket.decoded_token.name}`);
});