node.js - real - socket io 1.2 0 js
Redirigir el tráfico de websocket en el puerto 80 con lighttpd (1)
Tengo un sitio web alojado en lighttpd, accesible en el subdominio "www". También tengo un servidor de chat escuchando en el puerto 8124 hecho con node.js y socket.io.
Quiero que todo el tráfico del cliente suceda en el puerto 80, al redirigir todas las solicitudes al subdominio "chat" al puerto 8124. Así que habilité mod_proxy y en lighttpd.conf agregué:
$HTTP["host"] == "chat.myserver.com" {
proxy.server = (
"" => ((
"host" => "78.128.79.192",
"port" => "8124"
))
)
}
En el cliente, cuando me conecto al websocket,
var socket = io.connect(''http://chat.myserver.com'');
Obtengo los mensajes correctos de node.js:
debug - client authorized
info - handshake authorized 6067470561567883577
debug - setting request GET /socket.io/1/websocket/6067470561567883577
debug - set heartbeat interval for client 6067470561567883577
debug - client authorized for
debug - websocket writing 1::
Pero el navegador da un error:
Firefox can''t connect to server ws://chat.myserver.com/socket.io/1/websocket/6067470561567883577
Por supuesto, todo funciona correctamente si me conecto directamente al puerto 8124:
var socket = io.connect(''http://www.myserver.com:8124'');
Pero, como dije, me gustaría que todo el tráfico del cliente esté en el puerto 80. ¿Es posible?
Se sabe que mod_proxy no es compatible con websockets.
HAProxy es compatible (no lo he probado yo mismo, pero aquí hay un artículo sobre su configuración para websockets ).