【问题标题】:How to receive event in JS from Java RestApi Spring 3 IE11?如何从 Java Rest Api Spring 3 IE11 接收 JS 中的事件?
【发布时间】:2020-07-11 19:24:04
【问题描述】:

后端基于Spring 3,视图基于JSP,前端基于HTML/JS。

我有一个可以被其他应用程序调用的 Rest 客户端。

当我在我的 Rest 客户端上收到请求时,我如何在我的 JS 代码中接收?

【问题讨论】:

    标签: java spring jsp events http2


    【解决方案1】:

    通常,我会说您需要服务器推送或 WebSockets 之类的东西。但这些在 Spring 3 中还不存在

    HTTP/2 服务器推送最近才在 Spring 5 中引入:https://www.baeldung.com/spring-5-push

    以及 Spring 4 中的 WebSockets:https://www.baeldung.com/websockets-spring

    如果您坚持使用 Spring 3,我会编写一个执行轮询的 javascript 方法,即每隔几秒调用一次 Ajax API 以查看是否有需要处理的更新。

    这个想法的更高级的实现是在 ActiveMQ Ajax 客户端中完成的:https://activemq.apache.org/ajax

    【讨论】:

    • 感谢您的宝贵回答。我将升级到 Spring 4.2,然后使用 SSE(服务器发送事件),因为我只是需要从服务器到客户端的单向通信。在做了一些研究之后,SSE 和 Websockets 在性能水平上几乎相同。 Spring Websockets 需要将协议从 HTTP 更改为另一种协议,然后如果连接丢失,SSE 会尝试重新连接,而不是 Websockets,您必须自己处理重新连接。
    • 如果您只需要推送事件,SSE 是 WebSockets 的更好替代方案。一个小问题:与 WebSockets 不同,Internet Explorer 不支持它:caniuse.com/#feat=eventsource
    • 目前我只需要从服务器推送。 IE11 不支持 js 对象 EventSource 但存在 pollyfil。我问了一个关于我使用 SSE 的用例的问题,如果它真的是实时的,我最终会使用它。 stackoverflow.com/questions/60976881/…
    猜你喜欢
    • 2020-02-06
    • 2021-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-10
    • 1970-01-01
    • 2011-11-05
    • 1970-01-01
    相关资源
    最近更新 更多