android开发使用OkHttp自带的WebSocket实现IM功能

一、背景

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() {
    @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);
          //连接失败...
      }

    });

4、使用WebSocket对象发送消息

复制代码
JSONObject jsonObject = new JSONObject();
            jsonObject.put("xxxxxx", xxxxx);

//发送消息            
websocket.send(jsonObject.toString());

最后推荐一个android 开发ui框架**XUI - Android 原生 UI 框架,**很多简单的ui都有对应的框架。

相关推荐
踢球的打工仔4 小时前
PHP面向对象(7)
android·开发语言·php
安卓理事人5 小时前
安卓socket
android
安卓理事人10 小时前
安卓LinkedBlockingQueue消息队列
android
万能的小裴同学12 小时前
Android M3U8视频播放器
android·音视频
q***577412 小时前
MySql的慢查询(慢日志)
android·mysql·adb
JavaNoober13 小时前
Android 前台服务 "Bad Notification" 崩溃机制分析文档
android
城东米粉儿13 小时前
关于ObjectAnimator
android
zhangphil14 小时前
Android渲染线程Render Thread的RenderNode与DisplayList,引用Bitmap及Open GL纹理上传GPU
android
火柴就是我15 小时前
从头写一个自己的app
android·前端·flutter
lichong95116 小时前
XLog debug 开启打印日志,release 关闭打印日志
android·java·前端