Java 实现WebSocketClient客户端
时间: 2024-01-05 13:12:55 浏览: 205
基于Java+Netty开发的即时通信基础框架,支持websocket与Netty客户端的消息传递
你可以使用 Java 的 WebSocketClient 类来实现 WebSocket 客户端。下面是一个简单的示例代码:
```java
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.WebSocket;
import java.util.concurrent.CompletionStage;import java.util.concurrent.CompletableFuture;
public class WebSocketClient {
public static void main(String[] args) {
HttpClient client = HttpClient.newHttpClient();
WebSocket webSocket = client.newWebSocketBuilder()
.buildAsync(URI.create("ws://localhost:8080/ws"), new WebSocketListener())
.join();
// 发送消息到服务器
webSocket.sendText("Hello, Server!", true);
// 关闭 WebSocket 连接
webSocket.sendClose(WebSocket.NORMAL_CLOSURE, "Client is closing connection");
}
}
class WebSocketListener implements WebSocket.Listener {
@Override
public void onOpen(WebSocket webSocket) {
System.out.println("Connected to the server");
}
@Override
public CompletionStage<?> onText(WebSocket webSocket, CharSequence data, boolean last) {
System.out.println("Received message from server: " + data);
return CompletableFuture.completedFuture(null);
}
@Override
public CompletionStage<?> onClose(WebSocket webSocket, int statusCode, String reason) {
System.out.println("Disconnected from the server: " + reason);
return CompletableFuture.completedFuture(null);
}
@Override
public void onError(WebSocket webSocket, Throwable error) {
System.err.println("An error occurred: " + error.getMessage());
}
}
```
在上面的示例中,我们使用 Java 11 引入的 `java.net.http` 包中的 `HttpClient` 和 `WebSocket` 类。首先,我们创建一个 `HttpClient` 对象,并使用 `newWebSocketBuilder()` 方法创建一个 WebSocket 客户端。通过传入服务器的 URI 和一个实现了 `WebSocket.Listener` 接口的自定义监听器对象,我们可以异步地建立 WebSocket 连接。然后,我们可以使用 `sendText()` 方法向服务器发送文本消息,并使用 `sendClose()` 方法关闭 WebSocket 连接。
在自定义监听器中,我们实现了几个回调方法:`onOpen()` 在连接建立时调用,`onText()` 在接收到服务器发送的文本消息时调用,`onClose()` 在连接关闭时调用,`onError()` 在发生错误时调用。在这些方法中,我们可以编写自己的逻辑来处理不同的事件。
请注意,以上代码仅为一个基本示例,实际应用中可能需要根据具体需求进行修改和完善。
阅读全文