У меня есть сервер node.js socket.io и сервер django. У сокет-сервера есть несколько клиентов, связанных с ним. Теперь я хочу отправить некоторые сообщения с сервера django на сервер socket.io, чтобы он мог передавать эти сообщения подключенному клиенту.
В настоящее время я использую pubsub, создав сервер redis. Но это не работает, и с сервером nodejs не создается запрос на соединение:
Пожалуйста, предложите мне хороший способ. Заранее спасибо.
Код в django:
import redis
client = redis.StrictRedis(host='localhost', port=6379, db=5)
client.publish('message', json.dumps({'query': {'token': jwt.encode({'user': 'admin'}, settings.SOCKET_SECRET_TOKEN, algorithm='HS256').decode('utf-8')}}))
Код с nodejs сервера:
const server = require('http').createServer();
const io = require('socket.io')(server);
const hostname = '127.0.0.1';
const SECRET_KEY = '*******************************';
const port = 3000;
const jwt = require('jsonwebtoken');
server.listen(3000, hostname, () => {
console.log(`Server running at http://${hostname}:${port}/`);
});
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) {
console.log("Co nnection established");
socket.on('message', function(message) {
io.emit('message', message);
});
});