Android WebSocketClient使用 connectBlocking 和 connect
时间: 2024-04-18 11:26:54 浏览: 285
`WebSocketClient` 是 Android 上用于创建 WebSocket 连接的一个类。`connectBlocking` 和 `connect` 都是 `WebSocketClient` 中用于建立连接的方法,但它们在连接建立的方式上有所不同。
`connectBlocking` 是一个阻塞方法,意味着调用它的线程会被阻塞直到连接建立或发生错误。这意味着在调用 `connectBlocking` 后,代码会一直等待直到连接成功或失败,而不会继续执行后续代码。这种方式适用于需要在连接建立完成后立即执行操作的场景。
示例代码如下:
```java
WebSocketClient client = new WebSocketClient(URI.create("ws://example.com"), new Draft_6455()) {
@Override
public void onOpen(ServerHandshake serverHandshake) {
// 连接成功后的操作
}
@Override
public void onMessage(String s) {
// 收到消息后的操作
}
@Override
public void onClose(int i, String s, boolean b) {
// 连接关闭后的操作
}
@Override
public void onError(Exception e) {
// 连接出错后的操作
}
};
client.connectBlocking(); // 阻塞等待连接完成
```
相比之下,`connect` 是一个非阻塞方法,它会立即返回并在后台启动连接过程。这意味着代码会继续执行后续的操作,而不会等待连接建立完成。如果需要在连接建立成功后执行操作,可以在 `onOpen` 方法中处理。
示例代码如下:
```java
WebSocketClient client = new WebSocketClient(URI.create("ws://example.com"), new Draft_6455()) {
@Override
public void onOpen(ServerHandshake serverHandshake) {
// 连接成功后的操作
}
@Override
public void onMessage(String s) {
// 收到消息后的操作
}
@Override
public void onClose(int i, String s, boolean b) {
// 连接关闭后的操作
}
@Override
public void onError(Exception e) {
// 连接出错后的操作
}
};
client.connect(); // 非阻塞连接
// 执行其他操作...
```
总结来说,`connectBlocking` 是一个阻塞方法,会一直等待连接建立完成或发生错误,适用于需要立即执行连接后续操作的场景;而 `connect` 是一个非阻塞方法,会立即返回并在后台启动连接过程,适用于可以在连接建立完成后再执行操作的场景。
阅读全文