java代码发送websocket请求
时间: 2023-08-31 20:05:19 浏览: 48
下面是一个使用Java发送WebSocket请求的示例代码:
```java
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.WebSocket;
import java.net.http.WebSocket.Listener;
import java.net.http.WebSocketHandshakeException;
import java.nio.ByteBuffer;
import java.util.concurrent.CompletionStage;
public class WebSocketClient {
public static void main(String[] args) throws Exception {
HttpClient httpClient = HttpClient.newHttpClient();
WebSocket webSocket = httpClient.newWebSocketBuilder()
.buildAsync(URI.create("wss://example.com/ws"), new WebSocketListener())
.join();
// Send a text message
webSocket.sendText("Hello, world!", true).join();
// Send a binary message
webSocket.sendBinary(ByteBuffer.wrap(new byte[] { 0x00, 0x01, 0x02 }), true)
.join();
// Close the connection
webSocket.sendClose(WebSocket.NORMAL_CLOSURE, "Done").join();
}
private static class WebSocketListener implements Listener {
@Override
public void onOpen(WebSocket webSocket) {
System.out.println("WebSocket opened");
}
@Override
public CompletionStage<?> onClose(WebSocket webSocket, int statusCode, String reason) {
System.out.println("WebSocket closed: " + statusCode + " - " + reason);
return null;
}
@Override
public CompletionStage<?> onText(WebSocket webSocket, CharSequence data, boolean last) {
System.out.println("Received text: " + data);
return null;
}
@Override
public CompletionStage<?> onBinary(WebSocket webSocket, ByteBuffer data, boolean last) {
System.out.println("Received binary: " + data);
return null;
}
@Override
public void onError(WebSocket webSocket, Throwable error) {
if (error instanceof WebSocketHandshakeException) {
System.out.println("WebSocket handshake failed");
} else {
System.out.println("WebSocket error: " + error.getMessage());
}
}
}
}
```
上面的代码使用了Java标准库中的HttpClient和WebSocket API。首先创建一个HttpClient实例,然后使用它创建一个WebSocket实例。在WebSocketListener中可以处理WebSocket的各种事件,例如连接打开,收到文本或二进制消息,连接关闭等。在main方法中,可以使用WebSocket实例发送消息或关闭连接。