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/

相关文章:

java - Spring Hateoas、PathVariable 和 SaxSerialization

php - 使用 Ratchet Websocket 和 Symfony 获取 session 数据

java - Spring 4 Websocket - 没有任何反应

node.js - 如何使用 websockets 制作一个 crud 应用程序?

spring - WebSocketConfigurer 和 @Scheduled() 在应用程序中不能很好地工作

Spring Websocket 多个代理中继地址?

java - 元素的优先级队列排序

java - 图书馆 |场景2d |设置表格的背景颜色?

java - 无法在 Android WebView 中设置 HttpURLConnection header

php - 从本地主机到实时服务器的 PHP 套接字编程