如何开发一个支持跨PC、手机端互通的纯血鸿蒙版聊天Demo?
摘要:鸿蒙原生(HarmonyOS)开发现在的势头非常猛,鸿蒙原生应用也是大势所趋。现在我们来实现一个纯血鸿蒙版的聊天Demo,这个Demo可以与我之前实现的聊天Demo的Windows端、安卓端、iOS端、Linux端互通信息的。
鸿蒙原生(HarmonyOS)开发现在的势头非常猛,鸿蒙原生应用也是大势所趋。现在我们来实现一个纯血鸿蒙版的聊天Demo,这个Demo可以与我之前实现的聊天Demo的Windows端、安卓端、iOS端、Linux端互通信息的。
一. 开发环境
开发工具:DevEco Studio 5.1
开发语言:ArkTS
测试手机:华为 Mate 70
二. Demo 实现的功能
本文ESFramework的鸿蒙版Demo演示了以下功能:
(1)客户端用户上下线时,通知其他在线用户。
(2)当客户端与服务端网络断开时,进行自动重连,当网络恢复后,重连成功。
(3)所有在线用户之间可以进行文字聊天。
(4)文件传送。
(5)消息同步调用。
(6)重登陆模式。当同名的用户登陆时,会把前面的用户挤掉。
这里有该Demo运行的效果演示视频。
文末有该Demo鸿蒙端实现的源码,下载源码后,对照着这篇文章看,会更容易理解。
三. Harmony鸿蒙客户端实现说明
源码解压后,在DevEco Studio中打开Demo项目,其结构如下所示:
1. 文件目录结构
2.定义信息类型
在本demo中,我们定义5个信息类型,分别表示文字聊天消息(直接发送给对方),文字聊天消息(由服务端转发),图片消息、撤回消息,以及客户端同步调用服务端。其定义如下:
enum InformationTypes{
/// 文字(表情)聊天信息
TextChat = 0,
/// 文字(表情)聊天信息 (由服务端转发给消息接收方)
TextChat4Transit = 1,
/// 图片聊天信息
ImageChat = 2,
/// 收到消息发送者 撤回消息请求
RecallMsg = 3,
/// 客户端异步调用服务端
ClientSyncCallServer = 4,
}
3.实现自定义信息处理器
客户端的utils里的customizeHandler实现了ICustomizeHandler接口,其主要实现HandleInformation方法,来处理收到的聊天信息。
handleInformation(sourceUserID: string, informationType: number, info: number[]): void{
......
}
4.index.ets 登录页
登录页的样式如图所示:
输入ip、账号、密码后,点击登录,输入的数据会用于初始化RapidPassiveEngine以登录。
