我正在使用 GWT。我的客户端从用户那里收集数据并将其发送到服务器以执行非常长度的计算。计算由不同的阶段组成。在每个阶段之后,我希望服务器将结果发送回客户端,以便用户可以看到一些进度,而服务器继续进行剩余部分的计算。
什么是一种优雅的方式来做到这一点(尽可能少的代码)?
我正在使用 GWT。我的客户端从用户那里收集数据并将其发送到服务器以执行非常长度的计算。计算由不同的阶段组成。在每个阶段之后,我希望服务器将结果发送回客户端,以便用户可以看到一些进度,而服务器继续进行剩余部分的计算。
什么是一种优雅的方式来做到这一点(尽可能少的代码)?
Comet 非常适合聊天或其他实时应用程序,但最简单和最简单的方法是使用并行请求该工作。第一个请求会将数据 POST 到服务器进行处理。第二个请求将获取处理作业的状态。这将是异步技术
或者,您可以在服务器端增加进程,并让客户端在每个阶段向请求发布数据。这种方式是块技术;意味着第 1 步运行,并阻止第 2 步,直到第 1 步完成。这有点容易,但代码比较混乱,因为您需要将三个请求嵌套在彼此的回调中。
COMET 的主要限制是防火墙和端口的问题。这可能会变得很麻烦,而且它的 QoS 并不总是 100% 正确。有时请求不会按正确的顺序推送,或者有时您并不总是得到推送。因此,在您需要使用异步或阻塞方法来确定准确性的时候。
作为参考,大多数花哨的文件上传者都使用异步技术。
在服务器端,您需要放入一些存储在会话中的静态字段,其中包含要发送到客户端的更新数据。在客户端使用计时器来指定更新 UI 的轮询频率。
至于请求,使用标准的 RPC 请求,它基本上只接受一个 te servlet 的 url,然后是一个回调。
你应该使用彗星。基本上,服务器会随时向视图发送通知。有很多 gwt 框架可以帮助您。
我在我的一个项目中使用了Atmosphere Websocket/comet 框架。使用 GWT 很容易实现。