Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/416.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在客户端(GWT)更新web应用程序的最佳实践_Java_Javascript_Gwt_Web_Session Cookies - Fatal编程技术网

Java 在客户端(GWT)更新web应用程序的最佳实践

Java 在客户端(GWT)更新web应用程序的最佳实践,java,javascript,gwt,web,session-cookies,Java,Javascript,Gwt,Web,Session Cookies,现在我有一个问题: 用户打开web应用页面,获取javaScript(ModuleName.nocache.js); 然后我更新客户端(roc请求、视图等) 用户未关闭浏览器中的“web应用”选项卡,未更新页面。他在某个地方咔嗒一声,然后随机爆炸。例如,RPC不工作,servlet移动到任何地方,是否存在许多错误 现在我想实现一个场景: 用户必须具有web应用版本的cookie属性。 根据请求,我看到了它,作为回应,我强迫他更新页面(不知道如何更新)。 若用户的请求无法传递,gwt将强制用户更新

现在我有一个问题:

  • 用户打开web应用页面,获取javaScript(ModuleName.nocache.js); 然后我更新客户端(roc请求、视图等)
  • 用户未关闭浏览器中的“web应用”选项卡,未更新页面。他在某个地方咔嗒一声,然后随机爆炸。例如,RPC不工作,servlet移动到任何地方,是否存在许多错误 现在我想实现一个场景:
    用户必须具有web应用版本的cookie属性。
    根据请求,我看到了它,作为回应,我强迫他更新页面(不知道如何更新)。
    若用户的请求无法传递,gwt将强制用户更新页面(不知道如何更新)

    但我认为必须有一种最佳实践方法来解决这个问题。

    异步回调中捕获s和s。第一个告诉您客户端代码与服务器端代码不兼容;第二个可以告诉您那里不再有rpcservlet(查找
    404
    状态代码)。 然后,您可以向用户显示一条消息,提示他重新加载页面(例如,Google Groups就是这样做的)

    也就是说,如果更改相对较小,有一些方法可以缓解这种情况:您可以在服务器端保留旧的序列化策略文件,以便服务器可以处理来自不同客户端版本的请求。不过,这些更改必须以某种方式向后兼容。
    然后,您可以在服务器端检测客户端版本(使用最新序列化策略文件的列表并检查客户端是否正在使用其中一个或旧的;或者使用请求头或cookie),并在响应中包含一些内容(响应头或cookie),告诉它有一个新版本。
    或者您可以定期轮询服务器(显然不使用RPC)以获取最新版本的应用程序。

    另一种方法:

  • 如果为空(如果不是,则转到下一步),保存
    com.google.gwt.core.client.gwt.getPermutationStrongName()LocalStorage
    Cookies
    中编写>并完成流程
  • 加载应用程序时,再次获取置换strong名称,并检查保存的名称是否不同
  • 如果向服务器请求所有内容是不同的强制(如果您想要/需要“中断”异步进程,您可以使用
    GQuery-promises
    )。然后,在
    LocalStorage
    Cookies
    中替换新gwt的排列id

  • 只要你的应用程序被加载,你就可以做到这一点(这不是什么大问题)。现在,当服务器上的版本发生更改时,您就可以使用它了。

    谢谢,这很有用