gpt4 book ai didi

spring-boot - CometD 应用程序是否需要强制使用 Websocket 协议(protocol)

转载 作者:行者123 更新时间:2023-11-28 22:46:42 24 4
gpt4 key购买 nike

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

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

除了第3方,这些都是在AWS ELB和EC2中建立的。

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

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

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

  1. Can the CometD provides push mechanism with HTTP only and establish a connection with Server? OR it needs Websockets (ws://) and websocket needs to be enabled in Zuul proxy and web server consecutively to establish a connection with server from browser/UI?
  2. Does it change the complete nature of the existing spring boot restful micro-service to web application

请指导我,以便我可以进一步进行。

最佳答案

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

来自CometD documentation preface :

CometD provides you APIs to implement these messaging patterns: publish/subscribe, peer-to-peer (via a server), and remote procedure call. This is achieved using a transport-independent protocol, the Bayeux protocol, that can be carried over HTTP or over WebSocket (or other transport protocols), so that your application is not bound to a specific transport technology.

您可以在服务器端禁用 WebSocket 传输(请参阅 this section 中的 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>

要进一步自定义,您可以在其中指定要使用的传输实现类,另请参阅 this section .

关于spring-boot - CometD 应用程序是否需要强制使用 Websocket 协议(protocol),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57782615/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com