如何从Django服务器向Node js socket.io服务器发送消息?

时间:2020-01-16 09:37:30

标签: node.js django

我有一个node.js socket.io服务器以及Django服务器。套接字服务器具有一些与其连接的客户端。现在,我想将一些消息从django服务器发送到socket.io服务器,以便它可以将这些消息广播到其连接的客户端。

当前,我正在通过创建Redis服务器来使用pubsub。但是它不起作用,并且没有使用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);
  });
});

0 个答案:

没有答案