首页 > 解决方案 > 启动时 SOCKET.IO 传输轮询 404 错误

问题描述

我正在使用最新的 4.1.3 socket.io 服务器和客户端代码。

我的聊天在“https://example.com/folder”

我收到以下错误:“https://example.com/folder/socket.io/?EIO=4&transport=polling&t=NgcY9e8”尝试初始化时出现 404 错误。”

我的服务器:

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);

app.get('/', (req, res) => {
  res.sendFile(__dirname + '/index.html');
});

io.on('connection', (socket) => {
    console.log('a user connected');
    socket.on('chat message', (msg) => {
        console.log('message: ' + msg);
    });
});
server.listen(3000, () => {
    console.log('-------------------- Started Server (Port 3000) --------------------');
});

我的客户:

<script src="https://cdn.socket.io/4.1.3/socket.io.js"></script>
<script>
var socket = io({
path: "/chat/socket.io/"
});
</script>

我不确定问题是什么..它是服务器端的东西吗?谢谢!

标签: websocketsocket.io

解决方案


解决了。

将以下块添加到站点的 conf.d 文件中:

location ~ ^/(node|socket.io) {
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header Host $host;
      proxy_pass http://127.0.0.1:3000/;
      proxy_http_version 1.1;
      proxy_set_header Upgrade $http_upgrade;
      proxy_set_header Connection "upgrade";
      sub_filter /node /;

推荐阅读