Próbuję użyć Node.js z Socket.IO do ułatwienia przesyłania wiadomości między przeglądarką a klientem, postępując zgodnie z the guide.Używanie socket.io z nodejs na serwerze z apache jako odwrotnym proxy
Jednak musiałem skonfigurować Węzeł odwrotny-proxy za Apache. Tak więc zamiast example.com:8080 dla węzła używam example.com/nodejs/.
Wydaje się, że Socket.IO traci poczucie samego siebie. Oto mój węzeł aplikacja
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);
});
});
A oto co mój plik klient wygląda
<!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>
Problemem jest tutaj odniesienie skrypt http://example.com/nodejs/socket.io/socket.io.js. Nie zwraca oczekiwanej zawartości javasscript - zamiast tego zwraca "Welcome to socket.io", jak gdybym trafił http://example.com/nodejs/.
Masz pomysł, jak to zrobić?
Wiem, że to nie ma związku z danym pytaniem (i proszę, zadzwoń do mnie, jeśli powinienem otworzyć nowe pytanie SO), ale jestem ciekawy jak wygląda twój httpd.conf Apache. Mam serwer proxy skonfigurowany do przekazywania na aktualny serwer node.js, jednak nie mogę uruchomić serwera proxy WebSocket. Czy mógłbyś podać przykład tego, jak robisz to z Apache? – pmalbu
Przepraszam, ale nie mogę. Ten projekt został wykonany na hackathonie ponad 2 lata temu, a skonfigurowany serwer nie istnieje. –