在后端更新时将数据发送到前端

Pra*_*age 8 java jquery java-ee

我的Web应用程序的后端接收来自多个客户端的更新.当发生此类更新时,应将其传达给所有其他客户端.

当我的后端更新时,如何从服务器向所有Web浏览器客户端发起更新?

我正在使用JBoss,JSF和Spring框架.

Mik*_*cic 9

请参阅类似的堆栈溢出队列:WebSockets与Server-Sent events/EventSource

我假设,正如DarthVader所做的那样,你的前端是某种(通常)无状态的HTML页面.浏览器中的东西.如果您希望自动推送所有客户端,则有三种选择:

Comet :(已弃用)
Comet实际上是在发出没有请求超时限制的AJAX请求.您发出请求,它就在那里并根据需要通过它传输数据.这可以使用隐藏的iFrame或标准XMLHTTPRequests(jQuery可以为您包装)来完成.您可以在此处详细了解此方法.

长轮询:
基本上,您使用javascript setInterval方法连续轮询服务器以进行更改.只需设置一个对服务器执行标准AJAX GET请求的时间间隔,并在每次成功时相应地更新您的页面.

浏览器API

  • HTML5 WebSockets
    使用任何类型的基于事件的后端(Twisted,EventMachine,node.js等)使 WebSockets成为理想的解决方案.只需让所有客户注册后端,并在任何给定客户提交后,将更改推送给所有其他客户.您可以在此页面上阅读更多(并查看一个很好的示例)WebSockets.浏览器支持=> canIuse

  • 服务器发送事件(SSE)
    通过服务器发送事件,服务器可以随时将新数据发送到网页,方法是将消息推送到网页.这些传入的消息可以被视为网页内的事件+数据.浏览器 suppport => canIuse