2017-10-13 5 views
0

Je suis en train de déployer projet socket.io de noeud à partir official sample dans mon serveur (Ubuntu avec Apache 2 Server)socket PROXYPASS io sur Apache Server sur Ubuntu

Ceci est mon paramètre proxy dans /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 

Mais lorsque j'essaie d'accéder à mon serveur Web via le DNS, je ne peux pas me connecter au socket.

J'ai eu cette erreur dans ma console de navigateur

WebSocket connection to 'ws://example.com/socket.io/?EIO=3&transport=websocket&sid=HgU6py-fCl1GFrdsAAAK' failed: Error during WebSocket handshake: Unexpected response code: 400 

Peut-être parce que l'URL http://example.com/socket.io est en conflit avec ws: //example.com/socket.io

Comment puis-je utiliser le websocket et la http avec la même URL? Parce qu'il semble que http://example.com/socket.io et ws: //example.com/socket.io est généré par socket.io de cette ligne

var server = require('http').createServer(app); 
var io = require('socket.io')(server); 

Existe-t-il une autre solution pour résoudre ce problème, ou déployer mon noeud Socket.IO js application dans mon serveur apache sans proxy?

Répondre

0

Nevermind je parviens à le faire fonctionner avec RewriteEngine pour la prise Web (ws://)

Ceci est mon 000-default.conf dans /etc/apache2/sites-available

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