ガイドに従って、Node.jsとSocket.IOを使用して、ブラウザーとクライアント間のメッセージングを容易にしようとしています。
ただし、Apacheの背後に逆プロキシされたNodeをセットアップする必要がありました。したがって、ノードのexample.com:8080の代わりに、example.com /nodejs/を使用しています。
これにより、Socket.IOはそれ自体の感覚を失うようです。これが私のノードアプリです
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 );
});
});
そして、これが私のクライアントファイルがどのように見えるかです
<!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>
ここでの問題は、http://example.com/nodejs/socket.io/socket.io.jsへのスクリプト参照です。期待されるjavasscriptコンテンツを返しません。代わりに、 http: //example.com/nodejs/を押したかのように「Welcometosocket.io」を返します。
どうすればこれを機能させることができますか?