@roflanius

Варианты решения ошибки WebSocket connection to … failed: Invalid frame header?

Сокеты работают на localhost'е, но когда я переношу код на сервер, постоянно выдает ошибки независимо от того, что я делаю.

Nginx config файл:

server {
    server_name example.com;

    location / {
        proxy_pass http://localhost:3000;
    }

    location /peerjs {
        proxy_pass http://localhost:3000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "Upgrade";
    }

    location /socket.io/ {
        proxy_set_header Host $host;
        proxy_pass http://localhost:3000;

        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "Upgrade";
    }

    listen 443 ssl;


    ssl_certificate ...; # managed by Certbot
    ssl_certificate_key ...; # managed by Certbot
}


Server.js файл:

const express = require('express');
const app = express();
const http = require('http');
const server = http.createServer(app);
const { Server } = require("socket.io");

const io = new Server(server, {
    allowEIO3: true,
    cors: {
        origin: "*"
    }
});

server.listen(3000);


Клиент:

<script src="/socket.io/socket.io.js"></script>
<script>
const socket = io();
</script>


Что я пытался:

  • Менять параметры в io() на http/https, домен, wss и т.д.
  • Перенастраивать nginx конфиг разными способами
  • Перенастраивать CORS


Примечания:

0{"sid":"...","upgrades":["websocket"],"pingInterval":25000,"pingTimeout":20000,"maxPayload":1000000}
curl "https://example.com/socket.io/?EIO=4&transport=web..." выдает:
{"code":3,"message":"Bad request"}


Пока что ничего не помогло
  • Вопрос задан
  • 1022 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы