目录
android app开发经常会有IM需求,很多新手不晓得如何入手,难点在于通讯不中断。其实android发展到今天,很多技术都很完善,有很多类似框架可以实现。例如有:okhttp自带的websocket框架、easysocket等等。本文主要讨论的是okhttp自带的websocket框架。
implementation 'com.squareup.okhttp3:mockwebserver:3.8.1'
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();
- //websocket地址
- String url = "ws://xxxxx"
-
- //创建请求对象
- Request request = new Request
- .Builder()
- .get()
- .url(url)
- .build();
方法说明
- //开始连接
- WebSocket websocket = mClient.newWebSocket(request, new WebSocketListener() {
- @Override
- public void onOpen(WebSocket webSocket, Response response) {
- super.onOpen(webSocket, response);
- //连接成功...
- }
-
- @Override
- public void onMessage(WebSocket webSocket, String text) {
- super.onMessage(webSocket, text);
- //收到消息
- }
-
- @Override
- public void onMessage(WebSocket webSocket, ByteString bytes) {
- super.onMessage(webSocket, bytes);
- //收到消息
- }
-
- @Override
- public void onClosed(WebSocket webSocket, int code, String reason) {
- super.onClosed(webSocket, code, reason);
- //连接关闭...
- }
-
- @Override
- public void onFailure(WebSocket webSocket, Throwable throwable, Response response) {
- super.onFailure(webSocket, throwable, response);
- //连接失败...
- }
- });
- JSONObject jsonObject = new JSONObject();
- jsonObject.put("xxxxxx", xxxxx);
-
- //发送消息
- websocket.send(jsonObject.toString());
最后推荐一个android 开发ui框架XUI - Android 原生 UI 框架,很多简单的ui都有对应的框架。