PUSH イベントをシミュレートするために、サイトにコメットのような動作を実装しようとしています。
jQuery と $.ajax リクエストを使用しています。私の原則の問題は、成功イベントを取得したときに再リクエストを行うことです...しかし...スクリプトが実行されたときではなく、リクエストが送信されたときにすぐに成功します...
あなたは私が今持っている問題を見るかもしれません。再リクエストは、スクリプトからのデータがない場合でも発生します - 1 秒あたり 50 回以上スクリプトを呼び出すため、非常に悪い動作です...
スクリプトがその役割を果たしたとき (実際の成功イベント) を知る方法はありますか?
Br、ステパン。
編集:コード
/*
IPR Comet implementation
*/
// Define singleton
IPRComet = new function()
{
// Variables
this.m_bStopExecution = false;
this.m_iTmp = 1;
// Init IPR Comet implementation
this.Init = function()
{
// Start poll worker thread
this.m_bStopExecution = false;
this.PollThread();
};
// Main poll thred
this.PollThread = function()
{
if(this.m_bStopExecution)
return;
this.m_iTmp += 1;
$.ajax(
{
url: BASE_IPRBASE_URL + "/AJAX/Comet.php",
success: function(pCometResponse) { IPRComet.OnResponse(pCometResponse); },
error: function() { IPRComet.OnSystemError(); },
complete: function(jqXHR, sStatus)
{
$("#Sandbox-Output2").text(jqXHR.readyState + ": " + IPRComet.m_iTmp);
if(sStatus == "success" || sStatus == "timeout")
IPRComet.PollThread();
},
dataType: "json",
timeout: 30000
});
};
// System error handler
this.OnSystemError = function()
{
// Stop further execution
this.m_bStopExecution = false;
IPRClientHooks.CallHook("Comet::OnSystemError");
};
// Response error handler
this.OnResponseError = function(pCometResponse)
{
// Stop further execution
this.m_bStopExecution = false;
IPRClientHooks.CallHook("Comet::OnResponseError", pCometResponse);
};
// Response handler
this.OnResponse = function(pCometResponse)
{
// Error case
if(pCometResponse.Type == "Error")
{
IPRComet.OnResponseError(pCometResponse);
return;
}
IPRClientHooks.CallHook("Comet::OnResponse", pCometResponse);
};
};
// Start Comet when document is ready
$(document).ready(function() { IPRComet.Init(); });