去中心化的内网聊天软件Lachat是如何实现的?

前段时间,我们接了个小单,一个部队单位需要一款内网使用的即时通讯软件,方便内网的工作人员办公交流。要求去中心化,即不需要部署服务端和数据库,也不需要注册账号,不需要登录账号密码,开箱就能用。并且,要求同时支持Windows和信创系统(银河麒麟、统信UOS)。

在洽谈需求时,我们就想到了曾经的飞秋,但是,对方说飞秋的UI还是二十多年前的,太丑了,而且功能方面还有些特殊的需求也不能满足。于是,我们接下了这个单,花了两个月的时间做出来了。在交付后,我们将特殊的功能删掉,并且将UI改成通用化的,并取名为 Lachat(拉洽),现在分享出来免费给大家使用(永久免费使用)。

一. Lachat 效果展示

先看看Lachat的UI效果。 首先是聊天的主界面:

接下来看看个人信息页面:

最后再看看查看聊天记录页面:

二. 内网聊天软件的优点

相比于公网的聊天软件,去中心化的内网聊天软件 Lachat 有诸多优点。

1. 完全去中心化,无需服务器,部署零成本

不用买服务器、不用运维、不用数据库、不用后台管理。内网随便几台电脑连上同一局域网就能直接聊天。断电、重启、设备增减都不影响整体使用。

2. 数据绝对不出内网,极高安全性

消息不经过任何第三方服务器,不留云端日志,不怕被监控、爬取、泄露,满足等保、涉密信息系统基本要求。

3. 不依赖外网,断网依旧可用

即使完全物理隔离,只要在同一网段就能通信。适合封闭内网、临时应急指挥、野外局域网组网。

4. 无监管风险,不留痕

没有中心节点,无法被单点封禁。消息可设置本地销毁、不留记录。适合敏感场景内部沟通。

5. 低延迟、高抗毁

Lachat 使用 P2P 直连,延迟极低。任意节点掉线不影响其他节点通信,比传统 CS 架构更稳定、更难瘫痪。

三. Lachat 技术实现原理

1.技术选型

首先是技术选型:

(1)为了同时支持Windows和Linux信创国产系统,那当然是选择.NET Core 系列,比如.NET 8。

(2)UI框架可以选 Avalonia 。

(3)本地数据存储选择Sqlite。

2.主要技术问题

去中心化的内网聊天软件主要需要解决如下几个问题:

(1)节点发现:新节点加入内网后,自动发现其他在线节点,并且主动告诉其它节点自己上线了。

(2)对等通信:任意两个节点直接建立P2P连接,消息直连传输,不经过任何中间节点。

(3)动态维护:节点上线/下线实时同步,任意节点故障不影响整个网络正常运行。

(4)本地存储:所有消息、联系人资料、群组资料、配置等,均存储在本地设备。

(5)分布式资料同步:后上线的节点,能自动同步最新的联系人资料、群组资料(比如有组员加入或退出、群资料修改)等。

3.技术方案

我们看看上述的这些问题在技术层面要怎么解决。

(1)使用UDP广播/组播,新上线的节点可以在局域网内广播:"我上线了"。

(2)其它已上线节点收到新节点的上线广播通知时,就主动与新节点建立P2P连接,并把自己的信息告知新节点。

(3)使用心跳机制,来即时发现下线的节点。

(4)用户资料、群组资料、聊天记录存储到Sqlite数据库;其它配置信息可单独存储于一个json格式的配置文件中。

(5)分布式资料同步是最麻烦的,我们的方案是使用操作日志来重建和同步最新的资料状态。

四. 如何在信创系统上运行 Lachat

Lachat 信创国产Linux客户端推荐使用:银河麒麟 V10 SP1、统信 UOS V22 。

根据CPU架构下载对应傲瑞通客户端压缩包,并解压(注意:直接在国产Linux电脑上解压,不要在Windows上解压之后再拷贝到国产Linux)。在解压目录下,找到Lachat.sh文件:

双击该文件,会弹出如下提示框:

点击【直接运行】按钮,接下来会出现Lachat的主窗口。

五. Lachat 程序下载

(1)Windows端:Lachat.msi

(2)信创国产端:Lachat-X64.zipLachat-Arm64.zipLachat-Loongarch64.zip

欢迎有需要的朋友用起来,可以联系我们多提宝贵建议,谢谢。

相关推荐
hellojackjiang20111 个月前
鸿蒙Next原生IM即时通讯RainbowTalk,纯ArkTS编写,基于开源MobileIMSDK框架
网络编程·信息与通信·harmonyos·即时通讯
CherishXt2 个月前
对接腾讯IM,实现个人业务系统页面按钮直接跳转到和用户的聊天页面(不需要加好友)
uniapp·即时通讯·im
hellojackjiang20113 个月前
如何保障分布式IM聊天系统的消息有序性(即消息不乱)
分布式·架构·即时通讯·im开发
济南壹软网络科技有限公司4 个月前
深度解构:基于 React 19 + WebSocket 的高性能 SocialFi 社交金融架构
websocket·react.js·金融·即时通讯
zhuweisky4 个月前
Avalonia 实现视频会议(支持信创),可与Android、iOS互通
视频会议·信创国产·安卓视频会议·ios视频会议
杨浦老苏4 个月前
安全的消息传递和协作工具Virola Messenger
docker·即时通讯·群晖·im
微小冷5 个月前
Rust实战教程:做一个UDP聊天软件
rust·udp·egui·聊天软件·rust教程·用户图形界面
zhuweisky6 个月前
实现一个纯血鸿蒙版(HarmonyOS)的聊天Demo,并可与其它PC、手机端互通!
harmonyos·im·聊天软件
hellojackjiang20116 个月前
全面适配iOS 26液态玻璃,基于开源IM即时通讯框架MobileIMSDK:RainbowChat-iOS端v10.2发布
ios·网络编程·即时通讯·im开发·rainbowchat