【问题标题】:How to notify web server to response to a long-polling?如何通知 Web 服务器响应长轮询?
【发布时间】:2012-08-21 07:21:36
【问题描述】:

我们有一个 Web 服务器、一个客户端应用程序和一个与之反应的服务器应用程序。下图描述了结构。

系统的工作原理如下:用户更改客户端应用程序上的某些内容,例如更改书名。它将向服务器应用程序发送一个 TCP/IP 包。我期望的结果是在网络浏览器中显示的书名应该总是自动更改。据我所知,网络浏览器应该与网络服务器保持一个长轮询请求。我的问题是服务器应用程序如何通知 Web 服务器有关更改?我应该使用什么样的技术?

所有应用程序都是用 Java 编写的。

【问题讨论】:

    标签: java jakarta-ee


    【解决方案1】:

    我建议您使用 JMS 队列。当 Web 浏览器转向服务器执行长轮询时,它应该到达连接到队列并调用阻塞 receive() 方法的 servlet。 当客户端应用程序通知服务器应用程序时。应将适当的消息发送到队列中。此时阻塞receive() 将返回,servlet 将更新消息发送到Web 浏览器并返回阻塞receive(),直到发送下一个通知。

    为避免会话之间的不匹配,您可以使用动态队列或(更好)一个带有可以等于当前会话 ID 的选择器的队列。

    消息可以发送到使用 JSON 序列化的 Web 客户端。

    【讨论】:

      【解决方案2】:

      “彗星”专为长轮询http请求而设计。有关详细信息,请参阅:http://en.wikipedia.org/wiki/Comet_(programming)。 Comet有一些实现,例如:Nginx + mod_push,你的Server-app发送一个http到Nginx推送一个msg,然后通过nginx发送到浏览器。

      【讨论】:

        猜你喜欢
        • 2013-05-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-04-10
        • 1970-01-01
        • 2013-11-11
        • 2019-02-10
        相关资源
        最近更新 更多