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

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

http://www.lryc.cn/news/211299.html

相关文章:

  • 前端小技巧: TS实现柯里化函数
  • 【算法-数组2】有序数组的平方 和 长度最小的子数组
  • H5游戏源码分享-接苹果游戏拼手速
  • 详解类生到死的来龙去脉
  • 寻找倒数第K个节点
  • [ROS系列]ubuntu 20.04 从零配置orbslam3(无坑版)
  • 网络协议--TCP的保活定时器
  • leetcode 1353. 最多可以参加的会议数目
  • hadoop权威指南第四版
  • LeetCode75——Day20
  • 搭建微信小程序环境及项目结构介绍
  • Python通过pyecharts对爬虫房地产数据进行数据可视化分析(一)
  • 关于测试组件junit切换testng的示例以及切换方式分享
  • nginx 内存管理(二)
  • 【DevChat】智能编程助手 - 使用评测
  • Geek challenge 2023 EzHttp
  • matlabR2021a正版免费使用
  • 天气数据可视化平台-计算机毕业设计vue
  • 揭秘Java switch语句中的case穿透现象
  • Java-API简析_java.io.FilterOutputStream类(基于 Latest JDK)(浅析源码)
  • C语言 每日一题 PTA 10.29 day7
  • 持续集成部署-k8s-服务发现-Ingress 路径匹配与虚拟主机匹配
  • selenium工作原理和反爬分析
  • windows电脑安装系统后固态硬盘和机械硬盘的盘符号顺序显示错乱,解决方法
  • 自定义控件的子控件布局(onLayout()方法)
  • vscode提取扩展出错xhr
  • Docker 笔记(上篇)
  • python自动化测试(六):唯品会商品搜索-练习
  • 深度强化学习用于博弈类游戏-基础测试与说明【1】
  • 通过requests库使用HTTP编写的爬虫程序