繁体   English   中英

Java WebSocket 具有 Spring 集成 (DI) 且没有“CONNECT”消息的客户端

[英]Java WebSocket client with Spring integration (DI) and no 'CONNECT' message

我想创建一个 java 8 WebSocket 客户端应用程序,它与 Spring 集成并且不发送初始连接消息或可以自定义消息。

我已经用 tyrus 1.17 尝试过,但是ClientManager.createClient()创建了我的注释类@ClientEndpoint的新实例,我发现无法使用 Spring 创建的另一个实例。

我也尝试过使用 spring-websocket 5.2.9.RELEASE 和 spring-stomp 5.3.2.RELEASE,但它会发送其预定义的“CONNECT”消息,因为它不理解它,所以会破坏我与服务器的集成。

如果有人可以就我以前从未见过的来自谷歌的一些示例或支持所有这些示例的实现/示例提供任何指导,那就太好了。

jetty-websocket-client-api 两者都支持。

<dependency>
    <groupId>org.eclipse.jetty.websocket</groupId>
    <artifactId>websocket-client</artifactId>
    <version>9.4.32.v20200930</version>
</dependency>

添加@org.eclipse.jetty.websocket.api.annotations.WebSocket注释到 spring bean 然后创建四个注释方法来处理不同的事件:

import org.eclipse.jetty.websocket.api.Session;
import org.eclipse.jetty.websocket.api.annotations.OnWebSocketClose;
import org.eclipse.jetty.websocket.api.annotations.OnWebSocketConnect;
import org.eclipse.jetty.websocket.api.annotations.OnWebSocketError;
import org.eclipse.jetty.websocket.api.annotations.OnWebSocketMessage;

@OnWebSocketConnect public void onConnect(Session session) { }
@OnWebSocketMessage public void onMessage(String text) { }
@OnWebSocketClose public void onClose(int statusCode, String reason) { }
@OnWebSocketError public void onError(Throwable cause) { }

然后连接 WebSocket 客户端并连接

import org.eclipse.jetty.websocket.client.ClientUpgradeRequest;
import org.eclipse.jetty.websocket.client.WebSocketClient;

@Override
public void afterSingletonsInstantiated() {
    Object mySpringBeanForWebsocket = this;
    WebSocketClient client = new WebSocketClient();
    ClientUpgradeRequest request = new ClientUpgradeRequest();
    client.start();
    client.connect(mySpringBeanForWebsocket, new URI("wss://my.secure.websocket.server.address.com"), request);
}

然后api一调用onConnect方法就可以发送自定义初始消息

@OnWebSocketConnect
public void onConnect(Session session) {
    session.getRemote().sendString("Here comes my first message");
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM