Как отправить сообщение на сервер node js socket.io с сервера django? - PullRequest
1 голос
/ 16 января 2020

У меня есть сервер 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);
  });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...