3

socket.io アプリケーションをスケーリングし、サーバー上でいくつかのプロセスを実行しようとしています。

ここで説明されているように、メモリ ストアの代わりに redis ストアを使用します: https://github.com/LearnBoost/Socket.IO/wiki/Configuring-Socket.IO

サーバーはポート 8090 をリッスンします: var io = require('/usr/local/lib/node_modules/socket.io').listen(8090);

2 番目のプロセスを開始すると、使用中のアドレス エラーが表示されます: 警告 - エラーが発生しました: エラー: listen EADDRINUSE

この問題を処理する最善の方法は何ですか? 各プロセス用のポートと、それらを区別するためのロード バランサーはありますか?

または、より良い解決策はありますか?

4

1 に答える 1

6

このために、node-http-proxyを使用し、要求されているURLに基​​づいてトラフィックを内部ポートにルーティングします。以下は、リクエストのルーティングに使用しているものの非常に簡略化された例です。

var httpProxy = require('http-proxy');

var httpOptions = {
    router: {
        'domain1.com/foo': 'localhost:3001',
        'domain1.com/bar': 'localhost:3002',
        'domain2.com/baz': 'localhost:3003',
    } 
};

var httpServer = httpProxy.createServer(httpOptions);
httpServer.listen(80);

私の特定のセットアップの詳細については、この質問を参照してください:node-http-proxyと一緒にvhostsを使用する方法は?

于 2012-07-22T22:00:51.783 に答える