总体介绍

  • 开篇
    • 大概思路
    • 一、 客户端主要依赖
    • 二、包引用完成后,创建wsClient类。
    • 三、连接成功后,就可以在对于业务逻辑调用以下方法开始发送消息

开篇

本人是一位开发新人,将自己的开发学习过程记录在此,大家一起交流学习成长。
本篇系列是介绍一个简单的Android聊天软件实现,需要将开发一个Android应用,以及服务端程序。内容较为粗糙和简单,大佬请轻喷。

大概思路

开发一个简单的Android聊天软件,需要将开发一个Android应用,以及服务端程序。
客户端登录后初始化socket长连接,向服务端发起链接,服务端收到客户端链接,返回链接成功,即客户端上线成功。
客户端上线成功后,即可以向服务端发送消息,服务端收到消息后,将消息转发给指定的客户端。一条聊天消息即发送成功。

一、 客户端主要依赖

客户端完成socket长连接功能,我选择的引用这个websocket包。

//websocketimplementation 'org.java-websocket:Java-WebSocket:1.5.1'
//json解析    implementation 'com.google.code.gson:gson:2.7'

二、包引用完成后,创建wsClient类。

我的日志打印用了com.github.zhaokaiqiang.klog:library,所以是KLog方法打印

public class WsClient extends WebSocketClient {public WsClient(URI serverUri) {super(serverUri,new Draft_6455());}@Overridepublic void onOpen(ServerHandshake handshakedata) {KLog.d("JWebSocketClient", "onOpen()");}@Overridepublic void onMessage(String message) {KLog.d("JWebSocketClient", "onMessage()");}@Overridepublic void onClose(int code, String reason, boolean remote) {KLog.d("JWebSocketClient", "onClose()");}@Overridepublic void onError(Exception ex) {KLog.d( "onError()"+ex);}
}

在业务逻辑中,调用WsClient(uri)(一般选择在用户登录成功后),开始调用这个方法完成长链接初始化,然后调用connectBlocking()开始尝试连接。

WsClient client = new WsClient(uri) {@Overridepublic void onMessage(String message) {\\在这里处理服务端发来的消息KLog.d("onMessage", message);}@Overridepublic void onOpen(ServerHandshake handshakedata) {super.onOpen(handshakedata);KLog.i("SocketClientService", "websocket连接成功");}@Overridepublic void onClose(int code, String reason, boolean remote) {KLog.i("SocketClient", "onClose()");}
}client.connectBlocking();

三、连接成功后,就可以在对于业务逻辑调用以下方法开始发送消息

public void sendMsg(String msg) {if (null != client) {try {client.send(msg);}catch (WebsocketNotConnectedException e){KLog.e("长连接发送失败", String.valueOf(e));}KLog.d("发送的消息", msg);}}

服务端实现会在下一章节更新

开发简单Android聊天软件(1)相关推荐

  1. 开发简单Android聊天软件(7)

    构建离线消息获取流程 在 "开发简单Android聊天软件(6)" 中,完成了完成消息接收和加载,构建一个完整的聊天流程. 但是我们只完成了一半,完成存量历史记录展示,和即时聊天的 ...

  2. 开发简单Android聊天软件(6)

    构建完整消息接收加载流程 在 "开发简单Android聊天软件(5)" 中,完成了会话窗口的绘制,以及消息发送.现在我们来完成消息接收和加载,构建一个完整的聊天流程. 消息加载,那 ...

  3. 开发简单Android聊天软件(2)

    服务端实现大概思路 服务端需要创建socket端口供客户端(android)链接,为了能实现消息的转发,还需要记录一下长链接与用户的对应关系.总体大概思路是,服务端端口创建完成上线后,每次收到客户端的 ...

  4. Android聊天软件的开发(四)--通讯录

    一,好友排序    好友排序是按照昵称拼音进行A-Z排序.效果如下图:      对好友昵称进行排序,需要先将首字转换为ASCII码,然后根据ASCII码得到对应的拼音,最后根据拼音进行A-Z排序.点 ...

  5. Android聊天软件的开发(六)--表情

    表情用于聊天对话的输入,实现的原理主要是:在EditText或TextView中,使用SpannableString,将特定字符串替换为图片. 首先,我们可以规定,表情的字符串为[**],图片名称为s ...

  6. Android聊天软件的开发(七)--聊天通信

    聊天通信通过Socket实现,大概的框架如下图: 通信流程: 1.服务器在启动时开启聊天服务线程 可以通过ServletContextListener监听Servlet的初始化和销毁,来开启和关闭聊天 ...

  7. Android聊天软件的开发--聊天通信

    Android聊天软件的开发(七)--聊天通信 2014-06-20 23:17:49CSDN-vaintwyt-点击数:338  聊天通信通过Socket实现,大概的框架如下图: 通信流程: 1.服 ...

  8. Android聊天软件的开发(二)--数据库

    一,服务器数据库    服务器端的数据库是MySQL,使用Hibernate实现数据的增删改查.主要存储的数据有:用户信息,好友列表.             其中,好友列表中的friend_list ...

  9. Android聊天软件的开发(三)--网络连接

    一,服务器网络接口    服务器网络接口通过Servlet实现,可以获得客户端提交的数据,对数据进行查询存储操作,以及返回结果数据给客户端.客户端可以通过HTTP协议直接访问网络接口.    HTTP ...

最新文章

  1. Rocksdb Ribbon Filter : 结合 XOR-filter 以及 高斯消元算法 实现的 高效filter
  2. 如何判断你的数据集是否适合使用深度学习模型?如果数据量太小有什么解决办法?
  3. druid连接池mysql5.7_Spring Boot 使用Druid连接池整合Mybatis-Plus连接Mysql数据库
  4. win2003服务器的一些安全设置
  5. 数据结构与算法:已知二叉树两种遍历序列,求第三种遍历序列
  6. BugkuCTF-MISC题telnet
  7. 知乎上的48条神回复,针针见血
  8. 装备制造新亮点 机器人红利时代到来
  9. 日本惊现史上最大数字货币被盗案,加密货币交易所疑遭黑客盗走620亿日元!
  10. oeasy教您玩转linux010105详细手册man
  11. P4199 万径人踪灭 [Manacher + FFT]
  12. TCP网络编程(基于UDP的网络聊天室)
  13. word删除页眉下面的横线
  14. struts中的javascript
  15. KATKO KEM640U开关
  16. 数据库设计实例 教务管理系统
  17. ead开局 华三inode_03 EAD用户接入-受控软件管理-新华三集团-H3C
  18. 产品不良率计算公式--如PPM,DPPM,DPMO等
  19. 刷脸支付是一个不容错过的商机
  20. 基于学术研究下载NOAA探空数据资料的详细步骤

热门文章

  1. 外卖CPS小程序部署指南,个人获取美团外卖小程序跳转链接
  2. 程序员为何找不到女票的原因
  3. ARFoundation系列讲解 - 31 光照估计
  4. oracle 此处不允许序号
  5. kali linux 磁盘,在硬盘上安装Kali Linux
  6. sxt_(015)_request处理表单数据及乱码
  7. 海康威视曲面大屏出现花屏,闪烁等现象该如何解决?
  8. 可能是最好的正则表达式的教程笔记了吧...
  9. DVM和ART的区别详解
  10. CDH6.2配置spark.yarn.jars目录