前段时间,我们接了个小单,一个部队单位需要一款内网使用的即时通讯软件,方便内网的工作人员办公交流。要求去中心化,即不需要部署服务端和数据库,也不需要注册账号,不需要登录账号密码,开箱就能用。并且,要求同时支持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.zip 、 Lachat-Arm64.zip 、 Lachat-Loongarch64.zip
欢迎有需要的朋友用起来,可以联系我们多提宝贵建议,谢谢。