GWT - как клиент может обнаружить, что его javascript не синхронизирован, если сервер обновлен - PullRequest
5 голосов
/ 15 сентября 2011

У меня есть приложение GWT, где пользователи поддерживают браузерную часть приложения открытой бесконечно. Время от времени мы обновляем приложение - если пользователи выполнят перезагрузку в своих браузерах, после этого все будет хорошо. Однако обычно происходит то, что они продолжают использовать уже открытую версию приложения, то есть версию, обслуживаемую до обновления, и затем испытывают неясные ошибки, связанные с RPC, поскольку клиентский Javascript больше не синхронизируется с тем, что находится на сервере.

Есть ли в GWT какой-либо механизм, который вы можете включить или включить в свой код, чтобы справиться с этим. Мне не нужна умная обработка ситуации, например, при попытке перезагрузить приложение и восстановить текущее состояние пользователя достаточно простого диалога, объясняющего, что клиент и сервер больше не синхронизируются и что веб-приложение необходимо перезагрузить.

Ответы [ 2 ]

4 голосов
/ 15 сентября 2011

Документация интерфейса com.google.gwt.user.client.rpc.AsyncCallback<T> дает подсказку о том, как это сделать.

   public void onFailure(Throwable caught) {
     // Convenient way to find out which exception was thrown.
     try {
       throw caught;
     } catch (IncompatibleRemoteServiceException e) {
       // this client is not compatible with the server; cleanup and refresh the 
       // browser
     } catch (InvocationException e) {
       // the call didn't complete cleanly
     } catch (ShapeException e) {
       // one of the 'throws' from the original method
     } catch (DbException e) {
       // one of the 'throws' from the original method
     } catch (Throwable e) {
       // last resort -- a very unexpected exception
     }
   }

Скорее всего, вы захотите обработать (всплывающее диалоговое окно пользователя)IncompatibleRemoteServiceException.

1 голос
/ 15 сентября 2011

Оно называется IncompatibleRemoteServiceException , а способ обработки исключений, в том числе этого, упоминается в документации Google Связь с сервером .

...