私は、setTimeout を呼び出して成功時に自分自身を呼び出す ajax 呼び出しを持つ関数で、単純なチャットの実装に取り組んでいます。これは約 30 秒ごとに実行されます。これは問題なく動作しますが、メッセージが来たときにもっとすぐに通知が欲しいです。次のようなjQueryコードを使用したロングポーリングの例がたくさんあります。
function poll()
{
$.ajax(
{
data:{"foo":"bar"},
url:"webservice.do",
success:function(msg)
{
doSomething(msg);
},
complete:poll
});
}
これがどのように機能するかは理解していますが、これはサーバーにリクエストをすぐに繰り返し送信し続けるだけです。サーバーには、何かが変更されるまで待機するロジックが必要なようです。そうしないと、報告する新しいものがなくても、すぐに応答が返されます。これは純粋に JavaScript で処理されますか、それともサーバー側で実装するものが不足していますか? サーバーで処理される場合、サーバーの実行を一時停止することは本当に良い考えですか? あなたの経験上、これを処理するより良い方法は何ですか? 私の setTimeout() メソッドは十分ですか?
WebSocket については知っていますが、まだ広くサポートされていないため、現在の技術に固執したいと思います。