2

node.js アプリを実行するために iisnode を使用しています。ただし、約 1 時間後に node.exe プロセスの実行が停止します (数秒ごとにデータベースからデータを取得する setInterval() メソッドがあるため、実行する必要があります)。何かアドバイス?

また、process.env.PORT を使用してサーバーをセットアップした場合、クライアント側で socket.io を使用してサーバーに接続するにはどうすればよいですか? 私は使用しなければならないことを理解しています

io.configure(function () { 
    io.set("transports", ["xhr-polling"]); // no websockets
    io.set("polling duration", 10); 
    io.set("log level", 1); // no debug msg
});
4

1 に答える 1

5

アプリケーションが iisnode を使用して IIS でホストされている場合、これは socket.io の正しい構成です。クライアント側では、IIS によって公開されているエンドポイントの通常の HTTP アドレスを使用してサーバーに接続します。socket.io をすぐに使用できるようにするには、node.js アプリケーションを Web サイト内の仮想ディレクトリではなく、IIS Web サイトとしてホストする必要があることに注意してください。アプリはhttp://foobar でアドレス指定できる必要があります。http://foobar.com/myapp/ではなくcom/

node.exe プロセスが実行を停止すると言うのは、プロセスが終了して消えるかハングするということですか? IIS は、非アクティブな状態が一定期間続くと (このサーバーをターゲットとする HTTP 要求が到着しない場合)、ワーカー プロセス (作成したすべての子プロセス (この場合は node.exe) を含む) を終了します。その期間の長さは、アプリケーション プールの設定で構成できます。

コードを定期的に実行する必要があるアプリケーションのロジックに依存している場合、プロセスの有効期間は HTTP メッセージングと密接に関連しているため、IIS 自体は最適なホスティング モデルを提供しません。耐久性のあるサーバー (例: Windows サービス、 http://nssm.cc/をチェックしてください) か、なんらかの形式の Web cronが本当に必要です。

于 2012-09-06T16:51:04.403 に答える