2

RequestBuilder時間がかかりすぎるGWTリクエストをタイムアウトするために使用しています:

RequestBuilder requestBuilder = _service.getStatistics(callback);
requestBuilder.setTimeoutMillis(5000);
try {
    requestBuilder.send();
} catch (RequestException e) {
    GWT.getUncaughtExceptionHandler().onUncaughtException(e);
}

呼び出しがクライアントでタイムアウトになり、キャンセルする必要があることを、呼び出されたリモート サービスに通知する方法はありますか?

4

2 に答える 2

5

別の呼び出しを行って、以前の呼び出しがキャンセルされたことをリモート サービスに伝える場合を除きます。

于 2009-08-14T12:22:07.680 に答える
1

これは実際には依存します。サーバーが多くの作業を行っている (そして Google App Engine を使用していない) 場合は、リクエストを保持して request.cancel() を呼び出すことができます。これによりブラウザのリクエストは終了しますが、サーバーは引き続き動作します。

返されるデータの形式によっては、呼び出しの処理中にサーバーが空のデータをクライアントに定期的にフラッシュするようにすることができます。これにより、クライアントがリクエストをキャンセルし、HTTP 接続が終了した場合、フラッシュは IOException をスローします。その後、このリクエストをキャッチして、サーバー側でリクエストの処理を停止できます。

于 2009-08-20T12:34:22.007 に答える