我拥有的
我有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
我尝试过
我已经彻底绝望了,不明白问题到底出在哪里。
PS 如果这很重要,我会使用CentOS 7
。我通过代理域,Cloudflare
并且 websockets 当然是连接的
PSS 服务器上的所有其他 HTTP 应用程序均正常运行(通过 Apache),问题仅出现在 websockets 中
答案1
答案其实很简单。结果发现,前端使用的是 2.0 版本Socket.IO
,而服务器上使用的是 4.0 版本。升级软件包有助于解决问题