Skip to content

sswi/SukiChat.Client

 
 

Repository files navigation

Avalonia 聊天客户端

项目简介

这是一个基于 Avalonia 框架的跨平台聊天客户端,采用 Prism 实现 MVVM 架构。
支持文字聊天、文件传输、实时音视频通话等功能,具有良好的扩展性和可维护性。

通过模块化设计和依赖注入,实现了各模块间的解耦,便于团队协作开发和后期维护。

界面展示

  • 聊天页面 聊天页面
  • 通讯录页面 通讯录用户信息页面
  • 实时语音通话页面 实时语音通话页面
  • 群发弹窗 群发弹窗

项目结构

  1. ChatClient.Avalonia
    • 自定义控件、主题样式
    • Behavior、Converter 等 UI 支持
  2. ChatClient.BaseService
    • Helper:平台辅助、消息/文件处理
    • Manager:全局单例数据管理
    • Mapper:Protobuf↔实体↔DTO 映射
    • MessageHandler:接收服务器推送
    • Services:消息发送与数据库存取
  3. ChatServer.Client
    • Socket 客户端
    • MessageOperate/Processor:Protobuf 消息处理
    • EventAggregator 消息分发
  4. ChatClient.DataBase
    • SQLite 本地数据库
    • 聊天记录、联系人等持久化
  5. ChatClient.Desktop
    • 程序入口
    • Prism MVVM 框架实现
  6. ChatClient.Media
    • WebRTC 实时音视频通话
  7. ChatClient.Resources
    • HTTP 短连接文件上传/下载
  8. ChatClient.Tool
    • DTO 定义:数据传输对象,用于不同层级间数据交换
    • Prism EventAggregator 事件:定义所有事件类型,实现模块间的解耦通信
    • BaseService 接口声明:定义服务接口,支持依赖注入和单元测试
    • 工具类和扩展方法:提高代码复用性
  9. ChatClient.Common
    • Protobuf 消息格式定义:客户端与服务端的统一协议
    • 常量定义和枚举类型
    • 共享的基础类和工具

代码功能实现

a. 通信实现

  • 基于 Socket 和 Protobuf 实现消息编解码
  • 使用 Prism EventAggregator 在模块间发布/订阅消息
  • 心跳检测机制确保连接稳定性
  • 重连机制处理网络波动
  • 消息队列确保消息有序传递
  • 消息状态追踪(发送中、已发送、已读)

b. 数据存储

  • SQLite 数据库初始化与迁移
  • EF Core 或直接 SQL 操作本地持久化用户、聊天记录等
  • 数据库表设计:用户表、好友关系表、群组表、消息记录表、文件记录表
  • 数据加密保证用户隐私
  • 查询优化确保大量消息记录下的流畅体验
  • 定期数据清理和备份机制

c. 文件处理

  • HTTP 短连接实现文件上传/下载
  • 本地临时缓存与断点续传支持
  • 文件分片上传与断点续传
  • 上传/下载进度实时显示
  • 文件预览功能(图片、文档等)
  • 自动文件类型识别与处理

d. 媒体处理

  • WebRTC 点对点视频通话
  • 音频编码/解码与回声消除
  • 视频流渲染与多路同步
  • 自适应网络带宽控制
  • 支持屏幕共享功能
  • 多人会议模式支持

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C# 100.0%