CometD 应用程序是否需要 Websocket 协议作为强制性协议



我必须向用户发送帐户更新消息,以便更新可以直接显示在浏览器中,就像实时更新一样。

我们现有的应用程序架构具有Zuul 1.x.x代理,Spring boot RESTFul微服务(只是一个传递(和第三方应用程序作为后端。Spring boot Restful 服务使用 OAuth 作为安全性来验证收到的请求。

这些都在 AWS ELB 和 EC2 中建立,但第三方除外。

所以我的问题是 CometD 集成/应用程序可以在没有上述功能的 websocket 的情况下工作吗?

当我阅读他们的文档时,他们总是说,它可以通过 HTTP 或 Websocket 工作,但我无法得出结论,我是否可以通过使用 CometD 集成仅使用 HTTP 来推送消息。

我的困惑是,如果我将 cometD 集成到现有的 Spring 启动微服务应用程序中

  1. CometD 是否可以仅提供 HTTP 的推送机制并与服务器建立连接?或者它需要Websockets(ws://(并且需要在Zuul代理和Web服务器中连续启用websocket以建立 从浏览器/UI 与服务器连接?
  2. 它是否会将现有 Spring 启动 restful 微服务的完整性质更改为 Web 应用程序

请指导我,以便我可以继续前进。

CometD 在没有 WebSocket 的情况下工作得很好,因此您可以使用 HTTP 将消息从 CometD 服务器推送到浏览器客户端。

摘自《彗星》文档序言:

CometD 为您提供了实现这些消息传递模式的 API:发布/订阅、对等(通过服务器(和远程过程调用。这是使用独立于传输的协议(Bayeux 协议(实现的,该协议可以通过 HTTP或 WebSocket(或其他传输协议(进行传输,因此应用程序不会绑定到特定的传输技术。

您可以在服务器端禁用 WebSocket 传输(请参阅本节中的allowedTransports参数(:

<web-app ...>
...
<servlet>
<servlet-name>cometd</servlet-name>
<servlet-class>org.cometd.server.CometDServlet</servlet-class>
<init-param>
<param-name>allowedTransports</param-name>
<param-value>long-polling</param-value>
</init-param>
...
</servlet>
...
</web-app>

有关进一步的自定义(可在其中指定要使用的传输实现类(,另请参阅此部分。

最新更新