常规情况下,大多数时候Java后台作为websocket服务端,实现方式也比较简单,网上很多案例代码。但是很多时候项目中服务与服务之间也需要使用websocket通信,此时项目就需要实现客户端功能。
步骤一:导入依赖:
<dependency>
<groupId>-websocket</groupId>
<artifactId>Java-WebSocket</artifactId>
<version>1.3.5</version>
</dependency>
步骤二:实现WebSocketClient抽象类:
该类中和websocket服务端接口类似,有onOpen、onClose、onMessage、onError方法,需要重写。实现该抽象类并注册中一个Bean。后面通过@AutoWired注入即可使用该客户端进行收发消息。
@Bean
public WebSocketClient webSocketClient() {
try {
WebSocketClient webSocketClient = new WebSocketClient(new URI("websocket服务端地址"), new Draft_6455()) {
//连接服务端时触发
@Override
public void onOpen(ServerHandshake handshakedata) {
("websocket客户端和服务器连接成功");
}
//收到服务端消息时触发
@Override
public void onMessage(String message) {
("websocket客户端收到消息={}", message);
}
//和服务端断开连接时触发
@Override
public void onClose(int code, String reason, boolean remote) {
("websocket客户端退出连接");
}
//连接异常时触发
@Override
public void onError(Exception ex) {
("websocket客户端和服务器连接发生错误={}", ());
}
};
();
return webSocketClient;
} catch (Exception e) {
();
}
return null;
}
步骤三:使用websocketClient向服务端发送消息:
使用()可以向服务端发送消息,查看api可以看到既可以发送String类型,也可以发送byte[]类型。
步骤四:接受处理服务端消息:
如果服务端有消息发送到客户端,那么可以调用()方法,进行消息处理。
上面这句描述不准确,在实现ws客户端时重写了onMessage()方法,重写方法可以是对接受消息的处理业务逻辑,所以后续在接受到消息时,不需要手动调用该方法,onMessage()方法会接受该方法,对接收消息的根据重写方法进行处理。