当前位置: 首页 > article >正文

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都有对应的框架。


http://www.kler.cn/a/105431.html

相关文章:

  • 了解神经网络
  • python:使用Flask-SQLAlchemy对数据库增删改查的简单示例
  • YouTrack 中如何设置邮件通知
  • 非小米笔记本小米妙享中心安装最新教程 3.2.0.464 兼容所有Windows系统
  • 13.4web自动化测试(Selenium3+Java)
  • [SpringCloud] Eureka 与 Ribbon 简介
  • linux deepin系统 php多版本
  • 1125:矩阵乘法《详解》
  • CCF CCSP2023参赛记 + 算法题题解
  • 【ARM Cortex-M 系列 4 番外篇 -- 常用 benchmark 介绍】
  • 行为型模式-策略模式
  • 【C++类的继承、父子类】牛顿插值公式求近似值
  • 在NLP中一下常见的任务,可以用作baseline;MRPC,CoLA,STS-B,RTE
  • 苹果官宣新品发布会 10月31日发布会与Mac有关
  • Vue3 + Tsx 集成 ace-editor编辑器
  • 【Javascript】函数声明的方式
  • 华为校招第三题 找最小数
  • 太极v14.0.4 免ROOT用Xposed
  • 【Oracle】VC6.0使用 odbc 访问 Oracle 存储过程
  • orm连接mysql