websocket - 启动时 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>
我不确定问题是什么..它是服务器端的东西吗?谢谢!
解决方案
解决了。
将以下块添加到站点的 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 /;
推荐阅读
- docker - 无法停止在我的 mac 上运行的 docker 容器
- php - 如何从 Laravel 的指定日期知道周数?
- c# - 实体框架核心api保存一对多关系数据
- sql - 在第一个最高分之后找到最低分
- asp.net-core - 未针对在 IIS 上运行的 ASP.net Core 应用程序更新环境变量
- android - TextInputEditText 提示被框轮廓覆盖
- c++ - 从具有特定列索引c ++的另一个矩阵中提取矩阵
- android - 缩小我的应用程序剥离基本类
- kubernetes - playbook 中的 delegate_to 存在问题,调用角色仅在列表中的一个主机上运行
- python - 更新包后我无法导入 tensorflow