帮我写一个基本的websocket程序
时间: 2023-08-28 08:23:33 浏览: 40
当然可以,以下是一个基本的Java 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.CountDownLatch;
public class WebSocketExample {
public static void main(String[] args) throws Exception {
// WebSocket服务器地址
String serverUrl = "ws://echo.websocket.org";
// 创建WebSocket客户端
CountDownLatch latch = new CountDownLatch(1);
WebSocket webSocket = HttpClient.newHttpClient()
.newWebSocketBuilder()
.buildAsync(URI.create(serverUrl), new WebSocket.Listener() {
@Override
public CompletionStage<?> onText(WebSocket webSocket, CharSequence data, boolean last) {
System.out.println("Received message: " + data);
return null;
}
@Override
public void onError(WebSocket webSocket, Throwable error) {
System.out.println("Error occurred: " + error.getMessage());
}
@Override
public CompletionStage<?> onClose(WebSocket webSocket, int statusCode, String reason) {
System.out.println("Connection closed: " + statusCode + " - " + reason);
latch.countDown();
return null;
}
})
.join();
// 发送消息
String message = "Hello, WebSocket!";
webSocket.sendText(message, true);
// 等待连接关闭
latch.await();
// 关闭WebSocket客户端
webSocket.abort();
}
}
```
该程序使用Java 11中的`java.net.http`包提供的WebSocket API来实现WebSocket客户端的连接和消息发送。需要注意的是,WebSocket是一个基于HTTP协议的协议,因此在建立WebSocket连接时需要提供WebSocket服务器的地址,并且使用HTTP协议进行握手。在WebSocket连接建立成功后,可以使用`sendText()`方法来发送文本消息,也可以使用`sendBinary()`方法来发送二进制消息。如果需要关闭WebSocket连接,可以使用`abort()`方法来终止WebSocket客户端的连接。