Node.js 套接字IO跨子域握手失败
我有两个子域指向同一台服务器,一个用于react应用程序,另一个用于提供套接字IO连接的API 我在我的浏览器控制台中不断遇到这个错误 我在apache日志中注意到以下错误: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
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