Android WebSocket即时通信

简介:   HTTP与WebSocket响应方式区别  WebSocket存在的理由  我们已经有了 HTTP 协议,为什么还需要另一个协议?因为只靠Http通信有一个缺陷:通信只能由客户端发起,HTTP 协议做不到服务器主动向客户端推送信息。这种单向请求的特点,注定了如果服务器有连续的状态变化,服务端想主动通知客户端,就难以实现。因此,工程师们一直在思考,有没有更好的方法,而 WebSocket 就是这样诞生的。

  HTTP与WebSocket响应方式区别

  WebSocket存在的理由

  我们已经有了 HTTP 协议,为什么还需要另一个协议?因为只靠Http通信有一个缺陷:通信只能由客户端发起,HTTP 协议做不到服务器主动向客户端推送信息。这种单向请求的特点,注定了如果服务器有连续的状态变化,服务端想主动通知客户端,就难以实现。因此,工程师们一直在思考,有没有更好的方法,而 WebSocket 就是这样诞生的。

  WebSocket其特点包括:建立在 TCP 协议之上,服务器端的实现比较容易与 HTTP 协议有着良好的兼容性,默认端口也是 80 和 443,并且握手阶段采用 HTTP 协议,因此握手时不容易屏蔽,能通过各种 HTTP 代理服务器数据格式比较轻量,成教性能开销小,通信高效可以发送文本、二进制数据协议标识符是 ws(如果加密,则为 wss),服务器网址就是 URL使用Java-WebSocket库进行简单通信

  在经过对比之后,我选择了Java-WebSocket这个开源框架,毕竟star数量也是蛮高的,有质量保证。 Java-WebSocket库github地址。

  1.引入库

  implementation "org.java-websocket:Java-WebSocket:1.5.1"代码示例

  2.创建WebSocketClient类

  public class WSClient extends WebSocketClient {

  public WSClient(URI serverUri) {

  super(serverUri);

  }

  public WSClient(URI serverUri, Draft protocolDraft) {

  super(serverUri, protocolDraft);

  }

  @Override

  public void onOpen(ServerHandshake handshakedata) {

  }

  @Override

  public void onMessage(String message) {

  }

  @Override

  public void onClose(int code, String reason, boolean remote) {

  }

  @Override

  public void onError(Exception ex) {

  }

  }回调方法含义:

  onOpen():连接成功回调,获取握手数据

  onMessage():接收消息回调,获取接收数据

  onClose():关闭连接回调,获取关闭信息

  onError():连接异常回调,获取异常信息

  3.与ws协议或wss协议地址通信,创建Uri,这里用例子 ws://echo.websocket.org 。

  URI uri=URI.create("ws://echo.websocket.org");

  4.创建WSClient示例,通过onMessage()方法接收信息。

  WSClient wsClient=new WSClient(uri) {

  @Override

  public void onMessage(String message) {

  Log.e("info", "收到消息 " + message);

  }

  };

  5.发送信息,可以发送String类型和byte[]类型

  wsClient.send("传给你信息");温馨提示:

  在封装WebSocket使用时,需要注意心跳检测和重连,间隔时间后需要校验,如果中断需要重连;在适当的退出位置调用close()关闭连接;与服务端通信需要协定好传递的json对象;注意需要校验登录的地方。

目录
打赏
0
0
0
0
46
分享
相关文章
|
9月前
|
Android App开发即时通信中通过SocketIO在客户端与服务端间传输文本和图片的讲解及实战(超详细 附源码)
Android App开发即时通信中通过SocketIO在客户端与服务端间传输文本和图片的讲解及实战(超详细 附源码)
546 0
【Android App】在线语音识别功能实现(使用云知声平台与WebSocket 超详细 附源码)
【Android App】在线语音识别功能实现(使用云知声平台与WebSocket 超详细 附源码)
155 0
【Android App】实现在线语音合成功能(使用云知声平台和WebSocket 超详细 附源码)
【Android App】实现在线语音合成功能(使用云知声平台和WebSocket 超详细 附源码)
306 0
Android即时通讯设计——腾讯IM接入和WebSocket接入
之前项目的群聊是用数据库直接操作的,体验很差,消息很难即时反馈,所以最后考虑到了使用腾讯的IM完成群聊的接入,不过中途还是有点小坎坷的,接入完成之后发现体验版一个群聊只有20人,当时看到体验版支持100个用户也就忍了,现在一个群聊只能20用户,忍不了了,所以暂时找到了**WebSocket**作为临时的解决方案(等有钱了再换),同时支持50个用户在线聊天,也算还行,勉强够用,下面就介绍两种实现方案的接入,正文即将开始~~
537 0
Android即时通讯设计——腾讯IM接入和WebSocket接入
js判断是否安装某个android app,没有安装下载该应用(websocket通信,监听窗口失去焦点事件)
js判断如果安装了android app,则调起app, 没有安装,则直接下载应用。提供两种解决方案,一种是websocket通信,一种是监听页面失去焦点事件
2933 0
Android--WebSocket
版权声明:本文为博主原创文章,转载请标明出处。 https://blog.csdn.net/chaoyu168/article/details/79625691         WebSocket 是一种双向通信协议,在建立连接后,WebSocket服务器和 Browser/Client Agent 都能主动的向对方发送或接收数据,就像 Socket一样。
1415 0

热门文章

最新文章

  • 1
    最近谈论 SSE 和 WebSocket 的人越来越多的原因
    26
  • 2
    Android历史版本与APK文件结构
    23
  • 3
    【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
    32
  • 4
    当flutter react native 等混开框架-并且用vscode-idea等编译器无法打包apk,打包安卓不成功怎么办-直接用android studio如何打包安卓apk -重要-优雅草卓伊凡
    4
  • 5
    APP-国内主流安卓商店-应用市场-鸿蒙商店上架之必备前提·全国公安安全信息评估报告如何申请-需要安全评估报告的资料是哪些-优雅草卓伊凡全程操作
    10
  • 6
    【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
    74
  • 7
    【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
    20
  • 8
    【09】flutter首页进行了完善-采用android studio 进行真机调试开发-增加了直播间列表和短视频人物列表-增加了用户中心-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
    9
  • 9
    【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
    16
  • 10
    escrcpy:【技术党必看】Android开发,Escrcpy 让你无线投屏新体验!图形界面掌控 Android,30-120fps 超流畅!🔥
    36
  • 1
    即时通讯安全篇(一):正确地理解和使用Android端加密算法
    18
  • 2
    escrcpy:【技术党必看】Android开发,Escrcpy 让你无线投屏新体验!图形界面掌控 Android,30-120fps 超流畅!🔥
    36
  • 3
    【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
    79
  • 4
    Cellebrite UFED 4PC 7.71 (Windows) - Android 和 iOS 移动设备取证软件
    35
  • 5
    【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
    51
  • 6
    Android历史版本与APK文件结构
    142
  • 7
    【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
    42
  • 8
    【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
    36
  • 9
    APP-国内主流安卓商店-应用市场-鸿蒙商店上架之必备前提·全国公安安全信息评估报告如何申请-需要安全评估报告的资料是哪些-优雅草卓伊凡全程操作
    65
  • 10
    【09】flutter首页进行了完善-采用android studio 进行真机调试开发-增加了直播间列表和短视频人物列表-增加了用户中心-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
    45
  • AI助理

    你好,我是AI助理

    可以解答问题、推荐解决方案等