一、背景
android app开发经常会有IM需求,很多新手不晓得如何入手,难点在于通讯不中断。其实android发展到今天,很多技术都很完善,有很多类似框架可以实现。例如有:okhttp自带的websocket框架、easysocket等等。本文主要讨论的是okhttp自带的websocket框架。
二、在项目中添加依赖包
implementation 'com.squareup.okhttp3:mockwebserver:3.8.1'
三、框架调用
1、配置OkHttpClient
websocket断线重连配置pingInterval即可,实现非常之方便。第一个参数为数字,第二个为单位一般设置秒(s)。
pingInterval(HEART_BEAT_RATE, TimeUnit.SECONDS)//设置心跳
OkHttpClient mClient = new OkHttpClient.Builder().readTimeout(3, TimeUnit.SECONDS)//设置读取超时时间.writeTimeout(3, TimeUnit.SECONDS)//设置写的超时时间.connectTimeout(3, TimeUnit.SECONDS)//设置连接超时时间.pingInterval(HEART_BEAT_RATE, TimeUnit.SECONDS)//设置心跳.build();
2、调用Url,构建WebSocket请求
//websocket地址
String url = "ws://xxxxx"//创建请求对象
Request request = new Request.Builder().get().url(url).build();
3、建立连接
方法说明
- onOpen(),连接成功
- onMessage(String text),收到字符串类型的消息
- onMessage(ByteString bytes),收到字节数组类型消息
- onClosed(),连接关闭
- onFailure(),连接失败
//开始连接
WebSocket websocket = mClient.newWebSocket(request, new WebSocketListener() {@Overridepublic void onOpen(WebSocket webSocket, Response response) {super.onOpen(webSocket, response);//连接成功...}@Overridepublic void onMessage(WebSocket webSocket, String text) {super.onMessage(webSocket, text);//收到消息}@Overridepublic void onMessage(WebSocket webSocket, ByteString bytes) {super.onMessage(webSocket, bytes);//收到消息}@Overridepublic void onClosed(WebSocket webSocket, int code, String reason) {super.onClosed(webSocket, code, reason);//连接关闭...}@Overridepublic void onFailure(WebSocket webSocket, Throwable throwable, Response response) {super.onFailure(webSocket, throwable, response);//连接失败...}
});
4、使用WebSocket对象发送消息
JSONObject jsonObject = new JSONObject();jsonObject.put("xxxxxx", xxxxx);//发送消息
websocket.send(jsonObject.toString());
最后推荐一个android 开发ui框架XUI - Android 原生 UI 框架,很多简单的ui都有对应的框架。