思路分析
- 使用
OkHttpClient#newWebSocket
建立长连接;
- 监听连接成功事件(
WebSocketListener#onOpen
);
- 连接成功后使用
WebSocket#send
向服务端发送数据;
- 需要结束时使用
WebSocket#close
关闭长连接。
实现代码
OkHttpClient client = new OkHttpClient.Builder().build();
Request request = new Request.Builder()
.url("ws://***")
.build();
client.newWebSocket(request, new WebSocketListener() {
@Override
public void onOpen(WebSocket webSocket, Response response) {
// 连接成功后向服务端发送数据(比如注册渠道)
String json = "{***}"
webSocket.send(json);
}
@Override
public void onMessage(WebSocket webSocket, String text) {
// 接收到推送的文本数据
}
@Override
public void onMessage(WebSocket webSocket, ByteString bytes) {
// 接收到推送的二进制数据
}
@Override
public void onClosing(WebSocket webSocket, int code, String reason) {
// 推送正在关闭
}
@Override
public void onClosed(WebSocket webSocket, int code, String reason) {
// 推送已关闭
}
@Override
public void onFailure(WebSocket webSocket, Throwable t, Response response) {
// 推送连接失败
}
});