通过 Apache 向 Socket.IO 应用发送请求时出现“错误请求”

通过 Apache 向 Socket.IO 应用发送请求时出现“错误请求”

我拥有的

我有Socket.IO来自模板

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

io.on('connection', (socket) => {
  console.log('a user connected');
});

server.listen(3000, () => {
  console.log('listening on *:3000');
});

我配置了Apache

<VirtualHost *:443>
  ServerName ws.domain.com
 
  ProxyPreserveHost On
  ProxyPass / http://127.0.0.1:3000/
  ProxyPassReverse / http://127.0.0.1:3000/

  SSLEngine on
  SSLCertificateFile /root/origin.pem
  SSLCertificateKeyFile /root/private.key
</VirtualHost>

当我尝试通过 Postman 发送请求时,localhost:3000一切正常

在此处输入图片描述

在此处输入图片描述

但当我尝试发送请求时,ws.domain.com我总是得到400 Bad Request

在此处输入图片描述

在此处输入图片描述

我尝试过

  1. 我尝试从配置Apache文档这对我没帮助
  2. 我尝试使用Nginx并从中配置它文档它也没有帮助我
  3. 我尝试使用FlaskPySocketIO使用重写服务器flask-socketio,但出现相同的错误

我已经彻底绝望了,不明白问题到底出在哪里。

PS 如果这很重要,我会使用CentOS 7。我通过代理域,Cloudflare并且 websockets 当然是连接的

PSS 服务器上的所有其他 HTTP 应用程序均正常运行(通过 Apache),问题仅出现在 websockets 中

答案1

答案其实很简单。结果发现,前端使用的是 2.0 版本Socket.IO,而服务器上使用的是 4.0 版本。升级软件包有助于解决问题

相关内容