java - 如何将 WebSocketContainer 实现到 StandardWebSocketClient 类中

标签 java websocket spring-websocket

我正在尝试通过 Spring 4.2 WebsocketClient support 连接到 SockJs 网络套接字服务器.到目前为止,这是我的客户:

public static void main(String[] args) throws Exception {
    WebSocketClient transport = new StandardWebSocketClient();
    WebSocketStompClient stompClient = new WebSocketStompClient(transport);
    stompClient.setMessageConverter(new StringMessageConverter());

    String url = "ws://localhost:8080/priceticker/ws";
    StompSessionHandler handler = new WSClient() ;
    stompClient.connect(url, handler);
}

这将提供我订阅 channel 所需的连接。 当我运行代码时,出现以下异常:

Exception in thread "main" java.lang.RuntimeException: Could not find an implementation class.
at javax.websocket.ContainerProvider.getWebSocketContainer(ContainerProvider.java:73)
at org.springframework.web.socket.client.standard.StandardWebSocketClient.<init>(StandardWebSocketClient.java:76)
at Main.main(Main.java:10)

我知道我需要为 META-INF 文件夹中的项目提供一个 WebSocketContainer,正如失败方法的评论所指示的那样:

* Obtain a new instance of a WebSocketContainer. The method looks for the
* ContainerProvider implementation class in the order listed in the META-INF/services/javax.websocket.ContainerProvider 
* file, returning the WebSocketContainer implementation from the ContainerProvider implementation

但我不明白如何在没有任何参数的情况下将文件连接到构造函数中。我试图遵循此 test case 中的示例但没有任何运气。我只需要了解容器到底是什么以及如何将其实现到我的项目中

最佳答案

Javax websocket 只提供规范。它不提供实现。要获得完整的实现,您可以使用 tyrus-standalone client .

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

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

关于java - 如何将 WebSocketContainer 实现到 StandardWebSocketClient 类中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31315707/

相关文章:

c# - PHP SOAP 不断返回旧结果

java - Spring WebSocket 从服务器发送多个对值消息

java - 如何在初始握手时从 Spring Websocket 检索 session ID 并在以后使用?

java - Spring Push 通过 WebSocket 向未经身份验证的用户发送消息

java - 如果我在 Comparator.compare() 中总是返回 0,为什么我的 Set 中最终只有 1 个项目?

java - 逆时针角度到顺时针角度转换

java - 奇数货币值(value)的正则表达式

java - 如何打印数组中出现次数最多的 5 个数字?

websocket - 我如何在 Apache Flink Serverless Java 中运行 Web 套接字

java - 如何使用spring websocket向自定义用户发送自定义消息?