Pergunta

Eu estou usando RequestBuilder para o tempo limite solicitações GWT que levam muito tempo:

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

Existe uma maneira de notificar o chamado serviço remoto que a chamada tem tempo limite para fora no cliente e que ele deve ser cancelado?

Foi útil?

Solução

Não, a menos que você fazer outra chamada para dizer o serviço remoto que a chamada anterior foi cancelado!

Outras dicas

Isso realmente depende. Se o servidor está fazendo um monte de trabalho (e você não está no Google App Engine) você pode manter o Pedido de volta e chamada request.cancel (). Isso vai acabar pedido do navegador, mas o servidor irá continuar a trabalhar.

Dependendo do formato dos dados que estão retornando, você pode ter o flush servidor alguns dados vazios para o cliente periodicamente enquanto a chamada está processessing. Isso fará com que o flush para lançar uma IOException se o cliente cancelou o pedido ea conexão HTTP é encerrada. Você pode então pegar este pedido e parar processessing o pedido no lado do servidor.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top