异步 Servlet 客户端,服务器推送

Posted

技术标签:

【中文标题】异步 Servlet 客户端,服务器推送【英文标题】:Asynchronous Servlet Client, Server push 【发布时间】:2011-06-15 13:13:39 【问题描述】:

大家好,我想处理一些服务器推送。我有一个异步 servlet 处理某些内容,将其推送到客户端,然后它处理其他内容并将其再次推送到客户端(相同的连接)。 servet 只返回数据(在这种情况下为 Json,但这并不是真正的数学)仅此而已。

所以我的问题是客户。我如何为此建立客户?例如,如果我使用 JQuery 发出 ajax 请求,我该如何对第一次响应之后的数据做出反应?

为了更清楚地说明我想要的是一个比较:使用 websockets 我有方法 onmesssage。

websocket ws = new WebSocket("ws://myserver.com");
ws.onmessage = function(event)

   var x = event.data
   .... // some other code here

所以我想要的只是一个 onmessage 方法:)。我想这并不像使用 websockets 那样容易,但也许有人有一个想法。

问候阿列克斯

【问题讨论】:

【参考方案1】:

您可以让您的服务器生成一个响应,该响应由客户端加载到隐藏的 iframe 中。生成的响应将包含偶尔调用“外部”(包含文档)的 javascript 语句。您可以使用 parent 获取包含文档。

但请不要认为这种技术是相当骇人听闻的(至少在我看来)。您可能需要重新考虑只使用 XMLHttpRequest,尤其是因为它为您提供了简单而强大的错误处理。您可以执行更多请求(而不是在服务器端附加到“旧”响应)。这可能会引入额外的延迟,但这种 iframe 技巧在实践中确实很麻烦。

【讨论】:

嗨 Waldheinz,我同意 iframe 的想法有点不干净。但是您向我指出了我想要的解决方案(XMLHttpRequest)。这正是我所寻找的。非常感谢

以上是关于异步 Servlet 客户端,服务器推送的主要内容,如果未能解决你的问题,请参考以下文章

使用java的服务器推送[关闭]

使用jetty的continuations实现"服务器推"

Java Socket 编程推送 servlet - 将 Servlet 部署到服务器后未初始化

服务端主动给客户端推送消息

后端消息推送-SSE协议

WebSockets 和异步 Servlet 技术之间有啥联系?