Avalonia 在跨平台上的表现非常出色,对信创国产操作系统(像银河麒麟、统信UOS、Deepin等)也很不错。现在,我们就来使用 Avalonia 实现一个跨平台的简单IM,除了文字聊天外,还可以语音视频通话。废话不多说,我们开始吧!
下图是这个简单IM的Avalonia客户端在国产统信UOS上的运行的截图:

一. IM 即时通讯系统主要功能
这个简单的IM系统实现了以下功能:
1.基础功能、文字聊天
(1)客户端用户上下线时,通知其他在线用户。
(2)当客户端与服务端网络断开时,进行自动重连,当网络恢复后,重连成功。
(3)所有在线用户之间可以进行文字聊天(支持表情,支持撤回消息、删除消息)。
(4)文件传送。
2.语音视频聊天、远程桌面
(1)一方发起视频对话请求,对方同意后,即可开始视频对话。
(2)在对话的过程中,任何一方都可以挂断,以终止对话。
(3)在对话的过程中,任何一方掉线,都会自动终止对话。
(4)双击视频窗口,会全屏显示视频,按esc退出全屏。
(5)远程桌面或远程协助功能,也是跟视频聊天同样的流程,不再赘述。
二.开发环境
1.开发工具:
Visual Studio 2022
2. 开发框架:
.NET Core 3.1
3.开发语言:
C#
4.其它框架:
Avalonia UI 框架(版本:0.10.22)、ESFramework 通信框架 (版本:7.2)
注:建议 Avalonia 使用0.10.*的版本,精简而且很稳定,而最新的11.0的版本太庞大了。
三.具体实现
下面我们讲一下Demo中核心的代码实现,大家从文末下载源码并对照着源码看,会更清楚些。
1.自定义消息类型 InformationTypes
若要实现上述功能列表中列出来的所有功能,我们先要定义相应的通信消息的消息类型,如下所示:
public static class InformationTypes
{
/// <summary>
/// 文字(表情)聊天信息
/// </summary>
public const int TextChat = 0;
/// <summary>
/// 文字(表情)聊天信息 (由服务端转发给消息接收方)
/// </summary>
public const int TextChat4Transit = 1;
/// <summary>
/// 图片聊天信息
/// </summary>
public const int ImageChat = 2;
/// <summary>
/// 收到消息发送者 撤回消息请求
/// </summary>
public const int RecallMsg = 3;
/// <summary>
/// 客户端异步调用服务端
/// </summary>
public const int ClientSyncCallServer = 4;
/// <summary>
/// 视频请求 5

本文介绍了如何使用Avalonia框架在银河麒麟、统信UOS等国产操作系统上开发一个具备文字聊天、语音视频通话功能的跨平台IM应用,包括基本功能实现、开发环境配置和关键代码示例。
最低0.47元/天 解锁文章
9072

被折叠的 条评论
为什么被折叠?



