Node.js 套接字IO跨子域握手失败

Node.js 套接字IO跨子域握手失败,node.js,sockets,socket.io,apache2,Node.js,Sockets,Socket.io,Apache2,我有两个子域指向同一台服务器,一个用于react应用程序,另一个用于提供套接字IO连接的API 我在我的浏览器控制台中不断遇到这个错误 我在apache日志中注意到以下错误: failed: Error during WebSocket handshake: Unexpected response code: 502 这是我的apache配置,我正在使用ProxyPass: ProxyPreserveHost打开 ProxyPass/http://0.0.0.0:3040/ ProxyPass

我有两个子域指向同一台服务器,一个用于react应用程序,另一个用于提供套接字IO连接的API

我在我的浏览器控制台中不断遇到这个错误

我在apache日志中注意到以下错误:

failed: Error during WebSocket handshake: Unexpected response code: 502
这是我的
apache
配置,我正在使用
ProxyPass

ProxyPreserveHost打开
ProxyPass/http://0.0.0.0:3040/
ProxyPassReverse/http://0.0.0.0:3040/
在我的前端,我使用
socket.io客户端连接:

let socket=io(process.env.GATSBY_CHATBOT_socket_URL,{transports:['websocket','xhr polling']});
我的
nodejs
服务器使用
socket.io

consthttps=require('https');
让选项={
key:fs.readFileSync(process.env.PRIV_key_PATH),
证书:fs.readFileSync(process.env.SSL\u证书路径),
密码短语:process.env.passphrase,
};
让服务器=https.createServer(选项,应用程序).listen(process.env.PORT,函数(){
log('在https端口上侦听:'+process.env.port);
});
让ioOptions={
时间间隔:10000,
pingTimeout:60000,
来源:process.env.NODE_env==='local'?null:'*.mydomain.com',
传输:['websocket','xhr轮询'],
};
让io=newrequire('socket.io')(服务器,ioOptions);

我错过了什么?为什么我的websocket握手无法正常工作?

我发现了问题所在,其实很简单

  • 确保已打开SSLProxyEngine

    • ProxyPass
      行之前添加
      SSLProxyEngine
  • 确保设置了标题

    • 添加
      标题集访问控制允许原点“https://YOURDONAIN.com“

  • 这就解决了我的问题,我希望这对其他人有帮助。

    您是否设置了
    apache
    来升级连接?@EslamAbuHugair您所说的升级连接是什么意思?
    AH00898: Error reading from remote server returned by /socket.io/
    AH01102: error reading status line from remote server 0.0.0.0:3040