Javascript Ubuntu上Apache服务器上的Proxypass套接字io
我正试图从我的服务器(带有Apache 2服务器的Ubuntu)中部署node js socket.io项目 这是我在Javascript Ubuntu上Apache服务器上的Proxypass套接字io,javascript,node.js,apache,ubuntu,socket.io,Javascript,Node.js,Apache,Ubuntu,Socket.io,我正试图从我的服务器(带有Apache 2服务器的Ubuntu)中部署node js socket.io项目 这是我在/etc/apache2/sites available/000 default.conf ProxyPass /ChatSocket http://localhost:3000 ProxyPass /socket.io http://localhost:3000/socket.io ProxyPass /socket.io ws://localhost:3000/socket.
/etc/apache2/sites available/000 default.conf
ProxyPass /ChatSocket http://localhost:3000
ProxyPass /socket.io http://localhost:3000/socket.io
ProxyPass /socket.io ws://localhost:3000/socket.io
但是当我试图通过dns访问我的web服务器时,我无法连接到套接字
我在浏览器控制台中遇到此错误
WebSocket connection to 'ws://example.com/socket.io/?EIO=3&transport=websocket&sid=HgU6py-fCl1GFrdsAAAK' failed: Error during WebSocket handshake: Unexpected response code: 400
可能是因为url与ws://example.com/socket.io冲突
如何使用相同url的websocket和http?因为似乎和ws://example.com/socket.io是由socket.io从此行生成的
var server = require('http').createServer(app);
var io = require('socket.io')(server);
是否有其他解决方法来修复此问题,或者在apache服务器中部署我的socket.io node js应用程序而不使用proxypass?无需担心,我已设法使其与web套接字的
重写引擎
一起工作(ws://
)
这是我在/etc/apache2/sites available中的000 default.conf
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/socket.io [NC]
RewriteCond %{QUERY_STRING} transport=websocket [NC]
RewriteRule /(.*) ws://localhost:3000/%1 [P,L]
ProxyPass /ChatSocket http://localhost:3000
ProxyPassReverse /ChatSocket http://localhost:3000
ProxyPass /socket.io http://localhost:3000/socket.io
ProxyPassReverse /socket.io http://localhost:3000/socket.io