Estoy intentando usar Node.js con Socket.IO para facilitar la mensajería entre el navegador y el cliente, siguiendo the guide.Usando socket.io con nodejs en un servidor con apache como proxy inverso
Sin embargo, tuve que configurar el nodo de proxy inverso detrás de Apache. Entonces, en lugar de example.com:8080 para node, estoy usando example.com/nodejs/.
Esto parece causar que Socket.IO pierda sentido de sí mismo. Aquí está mi aplicación nodo
var io = require('socket.io').listen(8080);
// this has to be here, otherwise the client tries to
// send events to example.com/socket.io instead of example.com/nodejs/socket.io
io.set('resource', '/nodejs/socket.io');
io.sockets.on('connection', function (socket) {
socket.emit('bar', { one: '1'});
socket.on('foo', function(data)
{
console.log(data);
});
});
Y esto es lo que se ve mi archivo del cliente como
<!DOCTYPE html>
<html>
<head>
<meta charset=utf-8 />
<title>Socket.IO test</title>
<script src="http://example.com/nodejs/socket.io/socket.io.js"></script>
<script>
var socket = io.connect('http://example.com/nodejs/');
console.log(socket);
socket.on('bar', function (data)
{
console.log(data);
socket.emit('foo', {bar:'baz'});
});
socket.emit('foo',{bar:'baz'});
</script>
</head>
<body>
<p id="hello">Hello World</p>
</body>
</html>
El problema aquí es la referencia de secuencia de comandos para http://example.com/nodejs/socket.io/socket.io.js. No devuelve el contenido esperado de javasscript, sino que devuelve "Bienvenido a socket.io" como si tocara http://example.com/nodejs/.
¿Alguna idea de cómo puedo hacer que esto funcione?
Sé que esto no está relacionado con la pregunta en cuestión (y por favor llámeme si debo abrir una nueva pregunta de SO), pero tengo curiosidad sobre cómo es su Apache httpd.conf. Tengo proxying configurado para pasar al servidor node.js real, sin embargo, no puedo hacer funcionar el proxy websockets. ¿Podría dar un ejemplo de cómo está haciendo esto con Apache? – pmalbu
Lo siento, pero no puedo. Este proyecto se realizó en un hackathon hace más de 2 años y el servidor que se creó para él ya no existe. –