socket.io не работает ни на одном socket.emit, запущенном на обратном прокси nginx - PullRequest
0 голосов
/ 17 июня 2020

У меня есть приложение узла, которое отлично работает в докеризованной среде. Он отлично работает по HTTP и локально. Только когда я использую обратный прокси Nginx, socket.emit ничего не возвращает.

My Nginx config:

   location /verification/ {
      proxy_pass http://127.0.0.1:3005/;
      proxy_set_header X-Forwarded-Host $server_name;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-Proto $scheme;
      proxy_http_version 1.1;
      proxy_set_header Upgrade $http_upgrade;
      proxy_set_header Connection 'upgrade';
      proxy_set_header Host $host;
      proxy_cache_bypass $http_upgrade;
   }

мое соединение с сокетом (клиент):

const socket = io( 
   'https://mywebsite.com',
   { path:  + '/verification/socket.io/', 
     secure: true, 
     rejectUnauthorized: false 
   }, fn)

Конфигурация моего сервера:

const io = socket(http, {path: '/socket.io/'});

1 Ответ

0 голосов
/ 02 июля 2020

На самом деле я пришел к решению с этим. Я сам реализовал сценарий комнаты, и он хорошо работает. Для этого я просто реализовал следующее:

const clients = {};
io.to('/verification/').connection(function(){
   
  clients[socket.id] = {room: null, id: socket.id};
  socket.on('message', function(payload){
      if(payload.intent === 'join'){
         clients[socket.id] = {...clients[socket.id], room: payload.room};
      }
  });

  //and to broadcast messages:

   
   Object.values(clients)
       .map(client => {
          socket.to(client.id).emit('message', 'foo message')
       })
})

...