0

ポート80でApacheを実行しているCentOSサーバーにNode.jsとSocket.ioをインストールしました。ポート8080でリッスンするソケットテストを作成しました。

サーバーのシェル内からアドレス localhost:8080 を curl すると、Socket.io-welcome メッセージが表示されます。次のような行がある場合:

<script src="http://localhost:8080/socket.io/socket.io.js"></script>

その後、ブラウザはファイルを見つけることができません。

「解決策」は へのリクエストを にプロキシすること/nodejs/でしhttp://localhost:8080/たが、この解決策は非常に長い間機能しませんでした。

Apache がインストールされている場合、Node.js サーバーを実行することは可能ですか? URL にアクセスするには、どの設定を変更する必要がありますhttp://server.com:8080か? Node.js は localhost からの接続のみを受け入れるようです。

4

1 に答える 1

1

問題はおそらく node.js プログラムにあります。ローカルのみでは0.0.0.0なく、リッスンする必要があります。127.0.0.1

それで、あなたは次のようなものを持っています:

.listen(8080, '127.0.0.1'); // '127.0.0.1' or 'localhost'

次のように変更する必要があります。

.listen(8080); // or 0.0.0.0

Apache は、ポート 8080 も使用する場合にのみ干渉しますが、この場合、ノード アプリの起動時にエラーが発生するはずです。

また、http://localhostブラウザで接続する場合、サーバーがブラウザと同じローカル マシン上にある場合にのみ機能します。テストには問題ないと思います。

ホストされたサーバーがある場合は、ドメインまたは IP アドレスに接続する必要があります。それ以外の場合、ブラウザーはそれを見つけられません。

更新: socket.io コードも正しく接続する必要があります。

var socket = io.connect('http://correct.server.com:8080'); // not localhost

ブラウザは正しい場所から JavaScript ファイルをロードする必要があります。

<script src="http://correct.server.com/socket.io/socket.io.js"></script> // not localhost

これは、ファイアウォール/ロード バランサーの問題に役立つ場合があります。

https://github.com/LearnBoost/socket.io/wiki/Socket.IO-and-firewall-software

于 2013-02-18T18:28:01.077 に答える