Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/457.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Ubuntu上Apache服务器上的Proxypass套接字io_Javascript_Node.js_Apache_Ubuntu_Socket.io - Fatal编程技术网

Javascript Ubuntu上Apache服务器上的Proxypass套接字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.

我正试图从我的服务器(带有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.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