socket.io-redis在elasticloadbalancer和react前端上不工作

62lalag4  于 2021-06-09  发布在  Redis
关注(0)|答案(0)|浏览(194)

一直在尝试使用来自aws的socket.io、express和elasticloadbalancer制作实时聊天应用程序,以便能够升级。但不幸的是,我不知道如何使用socket.io-redis。
我的redis很好用。在只有一个节点的本地应用程序上,我的应用程序可以在完全相同的设置下正常工作。很明显我在发射器上做错了什么,但我想不通。
这是我的密码。

server = http.createServer(app);
server.listen(PORT, (err) => {
  if (err) {
    return console.error('Failed', err);
  }
  console.log(`Listening on port ${PORT}`);
  const io = socketio(server);
  io.adapter(redisAdapter({ host: process.env.REDIS_IP, port: process.env.REDIS_PORT }));
  // Work with sockets
  io.on('connection', (socket) => {
    console.log('---------------');
    console.log('New client connected');
    // Client connection
    socket.on('joinRoom', (msg) => {
      const { user, room } = msg;
      console.log('-----------');
      console.log(`${user.username} se ha conectado a la sala ${room.name}`);
      // Join room
      socket.join(room.name);
    });

    // Recieve message
    socket.on('chatMessage', async (msg) => {
      console.log('-----------');
      console.log(`message recieve, broadcasting to ${msg.room.name}`);
      // broadcast message to same room
      socket.broadcast
        .to(msg.room.name)
        .emit(
          'message',
          { user: msg.user, message: msg.message },
        );
    });

    // Client disconnect
    socket.on('disconnect', () => {
      console.log('-------------');
      console.log('Client disconnected');
    });
  });

  return app;
});

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题