1

私は新技術を研究している立場なので、Long polling、node.js について聞いたことがあります。

を使用する Web アプリケーションを作成する必要がありますlong polling

このプロジェクトのすべてのページで、ポーリングを使用する必要があります。実際には、POP を介して新しい電子メールがあるかどうかを確認します。

だから私は次のことをする必要があると思います

  1. サーバーへの ajax リクエストを呼び出す
  2. サーバーはリクエストを受け取り、新しい電子メールがあるかどうかを確認します
  3. 新しいメール サーバーがある場合は、その詳細を応答します。
  4. 新しい電子メール サーバーがない場合は、スリープ状態になり、新しい電子メールが 1 つ届くまで再度チェックを開始します。

だからこのようなもの

$(document).ready(function(){

is_there_new_mail();

function is_there_new_mail()
{

$.get(url,function(data){

if(data ==true)
{
//do some actions and call again
is_there_new_mail();
}


});


}


});

そしてサーバーではこのようなもの

   function check_mail()
    {

    //processing and checking is there a new mail on inbox 

    return $is_mail = $this->_new_mail()?true:false;

    }

    function receiver()
    {
    if($check_mail())
    {
     //send to client..
    }
    else

    {
    //sleep sometime and call mail function
    }

} 

このようなことを行うと、サーバー上で多くの接続が開かれると聞きましたが、node.js を使用すると、1 つの接続で管理できます。

私は Codeigniter を使用していますが、node.js は初めてです。

codeigniter を使用して node.js を実装するにはどうすればよいですか、またはこのシナリオについて何か提案していただけますか。

4

1 に答える 1

3

node1つの接続ですべての要求を処理するようなものではありません。ノードは一度に多数の同時接続を処理できますが、他のハンドのApacheは、node.jsと比較してごくわずかな同時接続しか処理できません。

websockets http://socket.io/を調べてください。

Websocketを使用すると、クライアントとサーバー間の全二重接続が可能になります。HTTPプロトコルは、要求ごとに接続を開き、クライアントが応答を受信した後に接続を終了します。Websocketを使用すると、接続を開いたままにすることができます。

サーバー側でnodejsとwebsocketを使用する場合、クライアントが特定の間隔でサーバーをポーリングするのではなく、ソケットを使用してイベントをクライアントにプッシュできます。

したがって、長いポーリングからあなたを救うでしょう。

あなたの場合:nodejsとwebsocketを使用することにした場合は、サーバーで受信メールイベントをトリガーし、そのイベントについて既存のソケットに通知する方法を見つける必要があります。

したがって、ノードはメールをチェックするためにPOPをポーリングする必要もありますが、違いは何ですか

ポーリングを使用してアプリにログインした1000人のユーザーを想像してみてください。各ユーザーは30秒ごとにサーバーをポーリングします。したがって、1秒あたり2000のPOPポーリングが発生します。

nodejsを使用して、2 POPポーリング秒、メールがある場合はソケットに通知すると、クライアントがイベントを処理します。

ただし、プロジェクトの全体的な要件を実際に考慮する必要があります。 Node.jsをいつ使用するかを決める方法は?

于 2012-06-24T15:08:32.163 に答える