okhttp实现webSocket长连接
【okhttp实现webSocket长连接】关于WebSocket简介见维基百科WebSocket。在Android客户端,一般可以有两种方式实现WebSocket通信:
- 通过okhttp实现WebSocket通信
- Java-WebSocket,纯java实现的WebSocket通信
本文只讲通过okhttp V3.6.0怎么实现WebSocket通信
首先导入依赖:
compile 'com.squareup.okhttp3:okhttp:3.6.0'
然后是添加联网权限:
最后是具体代码实现:
OkHttpClient okHttpClient = new OkHttpClient.Builder().build();
Request request = new Request.Builder()
.url("ws://" + "192.168.1.100" + ":" + 9555 + "/")
.build();
mWebSocket = okHttpClient.newWebSocket(request, new WebSocketListener() {//创建线程池,
ExecutorService writeExecutor = Executors.newSingleThreadExecutor();
WebSocket webSocket = null;
@Override
public void onOpen(final WebSocket webSocket, final Response response) {
this.webSocket = webSocket;
//建立连接成功后,发送消息给服务器端
writeExecutor.execute(new Runnable() {
@Override
public void run() {
//socket 发送信息到服务器
webSocket.send(“连接成功后,第一次发送信息”);
}
});
}@Override
public void onMessage(final WebSocket webSocket, String text) {//获取到服务器发送过来的信息,然后通过handler进行UI线程的操作
Message message = Message.obtain();
message.what = READ_BYSOKET;
message.obj = text;
mHandler.sendMessage(message);
}//webSocket关闭时,关闭线程池
@Override
public void onClosed(WebSocket webSocket, int code, String reason) {
super.onClosed(webSocket, code, reason);
writeExecutor.shutdown();
}
});
最后通过
mWebSocket.cancel();
将WebSocket关闭。推荐阅读
- 关于QueryWrapper|关于QueryWrapper,实现MybatisPlus多表关联查询方式
- MybatisPlus使用queryWrapper如何实现复杂查询
- python学习之|python学习之 实现QQ自动发送消息
- 孩子不是实现父母欲望的工具——林哈夫
- opencv|opencv C++模板匹配的简单实现
- Node.js中readline模块实现终端输入
- java中如何实现重建二叉树
- 人脸识别|【人脸识别系列】| 实现自动化妆
- paddle|动手从头实现LSTM
- pytorch|使用pytorch从头实现多层LSTM