私は次のような非常に単純な長いポーリングajax呼び出しを持っています:
(function poll(){
$.ajax({ url: "myserver", success: function(data){
//do my stuff here
}, dataType: "json", complete: poll, timeout: 30000 });
})();
私は今日の午後にこの例を取り上げましたが、うまく機能しているようです。私はそれを使って自分のページにいくつかのhtmlを作成していますが、それは私が知る限りほぼ瞬時に行われます。これによりサーバー上でワーカースレッドが開いたままになり、サーバーの負荷が大きすぎると完全に停止するのではないかと少し心配しています。誰かがこの理論に光を当てることができますか?バックエンドには、データベースを呼び出してオブジェクトをビルドし、オブジェクトを元に戻すwebapiサービス(.net mvc 4)があります。また、これが機能するためには、サーバーがデータベースを絶えず呼び出す必要があるように思われます...そしてそれは適切ではありませんか?
次の質問は、自分のページのhtmlを更新する必要があるかどうかをクライアントが判断するための最良の方法は何ですか?現在、JSON.stringify()を使用してオブジェクトを文字列に変換し、古い文字列に到達する文字列を比較しています。デルタがある場合は、ページ上のhtmlが再書き込みされます。現在、全体はありません。ダウンするオブジェクトの多くがダウンしますが、それは潜在的に非常に大きくなる可能性があり、その文字列比較を行うことは、クライアントにとってかなりリソースを消費する可能性があると思います...特にそれがほぼ常に行われている場合。
私にとっての結論は次のとおりです。ポーリングがどのくらいの期間機能するか正確にはわかりません。グーグルで検索し、上記のサンプルコードを見つけて実装しました。表面的には、すばらしいです。問題が発生するのではないかと心配しています。 (サーバー上で)ダウンし、古い結果を新しい結果と比較する私の方法は、(クライアント上で)悪意を持って行き詰まります。
あなたが提供できるありとあらゆる情報は大歓迎です。
TIA。