开发简单Android聊天软件(1)
总体介绍
- 开篇
- 大概思路
- 一、 客户端主要依赖
- 二、包引用完成后,创建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)相关推荐
- 开发简单Android聊天软件(7)
构建离线消息获取流程 在 "开发简单Android聊天软件(6)" 中,完成了完成消息接收和加载,构建一个完整的聊天流程. 但是我们只完成了一半,完成存量历史记录展示,和即时聊天的 ...
- 开发简单Android聊天软件(6)
构建完整消息接收加载流程 在 "开发简单Android聊天软件(5)" 中,完成了会话窗口的绘制,以及消息发送.现在我们来完成消息接收和加载,构建一个完整的聊天流程. 消息加载,那 ...
- 开发简单Android聊天软件(2)
服务端实现大概思路 服务端需要创建socket端口供客户端(android)链接,为了能实现消息的转发,还需要记录一下长链接与用户的对应关系.总体大概思路是,服务端端口创建完成上线后,每次收到客户端的 ...
- Android聊天软件的开发(四)--通讯录
一,好友排序 好友排序是按照昵称拼音进行A-Z排序.效果如下图: 对好友昵称进行排序,需要先将首字转换为ASCII码,然后根据ASCII码得到对应的拼音,最后根据拼音进行A-Z排序.点 ...
- Android聊天软件的开发(六)--表情
表情用于聊天对话的输入,实现的原理主要是:在EditText或TextView中,使用SpannableString,将特定字符串替换为图片. 首先,我们可以规定,表情的字符串为[**],图片名称为s ...
- Android聊天软件的开发(七)--聊天通信
聊天通信通过Socket实现,大概的框架如下图: 通信流程: 1.服务器在启动时开启聊天服务线程 可以通过ServletContextListener监听Servlet的初始化和销毁,来开启和关闭聊天 ...
- Android聊天软件的开发--聊天通信
Android聊天软件的开发(七)--聊天通信 2014-06-20 23:17:49CSDN-vaintwyt-点击数:338 聊天通信通过Socket实现,大概的框架如下图: 通信流程: 1.服 ...
- Android聊天软件的开发(二)--数据库
一,服务器数据库 服务器端的数据库是MySQL,使用Hibernate实现数据的增删改查.主要存储的数据有:用户信息,好友列表. 其中,好友列表中的friend_list ...
- Android聊天软件的开发(三)--网络连接
一,服务器网络接口 服务器网络接口通过Servlet实现,可以获得客户端提交的数据,对数据进行查询存储操作,以及返回结果数据给客户端.客户端可以通过HTTP协议直接访问网络接口. HTTP ...
最新文章
- Rocksdb Ribbon Filter : 结合 XOR-filter 以及 高斯消元算法 实现的 高效filter
- 如何判断你的数据集是否适合使用深度学习模型?如果数据量太小有什么解决办法?
- druid连接池mysql5.7_Spring Boot 使用Druid连接池整合Mybatis-Plus连接Mysql数据库
- win2003服务器的一些安全设置
- 数据结构与算法:已知二叉树两种遍历序列,求第三种遍历序列
- BugkuCTF-MISC题telnet
- 知乎上的48条神回复,针针见血
- 装备制造新亮点 机器人红利时代到来
- 日本惊现史上最大数字货币被盗案,加密货币交易所疑遭黑客盗走620亿日元!
- oeasy教您玩转linux010105详细手册man
- P4199 万径人踪灭 [Manacher + FFT]
- TCP网络编程(基于UDP的网络聊天室)
- word删除页眉下面的横线
- struts中的javascript
- KATKO KEM640U开关
- 数据库设计实例 教务管理系统
- ead开局 华三inode_03 EAD用户接入-受控软件管理-新华三集团-H3C
- 产品不良率计算公式--如PPM,DPPM,DPMO等
- 刷脸支付是一个不容错过的商机
- 基于学术研究下载NOAA探空数据资料的详细步骤
热门文章
- 外卖CPS小程序部署指南,个人获取美团外卖小程序跳转链接
- 程序员为何找不到女票的原因
- ARFoundation系列讲解 - 31 光照估计
- oracle 此处不允许序号
- kali linux 磁盘,在硬盘上安装Kali Linux
- sxt_(015)_request处理表单数据及乱码
- 海康威视曲面大屏出现花屏,闪烁等现象该如何解决?
- 可能是最好的正则表达式的教程笔记了吧...
- DVM和ART的区别详解
- CDH6.2配置spark.yarn.jars目录