gpt4 book ai didi

java - Spring 中的其他 WebsocketClient 实现是什么?

转载 作者:行者123 更新时间:2023-11-30 10:59:08 28 4
gpt4 key购买 nike

我有一个连接到 websocket 端点的 Spring 应用程序。为此,我使用 Spring StandardWebSocketClient 类。

WebSocketClient transport = new StandardWebSocketClient();
WebSocketStompClient stompClient = new WebSocketStompClient(transport);
stompClient.setMessageConverter(new MappingJackson2MessageConverter());
String url = "ws://localhost:8080/asynccontrol";
StompSessionHandler handler = new MySessionHandler();
stompClient.connect(url, handler);

这在 Jetty 中工作没有任何问题。现在我必须在 Websphere JRE7 环境中部署这个应用程序。由于此 WAS 版本不支持 JSR-356,因此我必须使用其他实现。从这个link WebsocketClient 可以是以下类型:

  • JSR-356 运行时中的 StandardWebSocketClient
  • 使用 Jetty 9+ 原生 WebSocket API 的 JettyWebSocketClient
  • Spring 的 WebSocketClient 的任何实现

第一个选择不可用(没有 JSR-356 运行时),第二个选择不可用(需要 JRE8,获得不受支持的 major.minor 版本 52),第三个选择是什么? Spring 的 WebSocketClient 的其他实现是什么?

是否可以在 JRE7 中重新编译 org.eclipse.jetty.websocketclient?

解决方案

我不能使用 jetty9.2,因为它与 JettyWebSocketClient 适配器不兼容。但是,我可以在没有适配器的情况下使用带有 StandardWebSocketClient 的 api。

我安装了 tomcat8,它也适用于 StandardWebSocketClient。在 tomcat7 中,我仍然遇到不兼容的 WsContainerProvider 子类型错误,这可能是我特定 tomcat 版本的错误。对于备份计划,我还开发了 TyrusWebSocketClient。谢谢你们。

最佳答案

您可以使用 tyrus-standalone client .

如果您使用的是 Maven,请添加此依赖项:

<dependency>
<groupId>org.glassfish.tyrus.bundles</groupId>
<artifactId>tyrus-standalone-client</artifactId>
<version>1.9</version>
</dependency>

 <dependency>
<groupId>org.glassfish.tyrus.bundles</groupId>
<artifactId>websocket-ri-bundle</artifactId>
<version>1.2.1</version>
</dependency>

我已经使用了 websocket-ri-bundle(第二个依赖项)它可以工作,但是这两个中的任何一个都可以正常工作。

编辑

如果你看到 StandardWebsocketClient

public StandardWebSocketClient() {
this.webSocketContainer = ContainerProvider.getWebSocketContainer();
}

Spring 尝试从客户端实现的 META-INF/services/javax.websocket.ContainerProvider 文件中识别容器提供者。因此,任何正确指出该文件的 websocket 客户端实现都可以工作。

关于java - Spring 中的其他 WebsocketClient 实现是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32007647/

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