网通社科技快报

CaoIM开源自部署IM系统上线 支持五端统一Flutter客户端

CaoIM是一款由个人开发者推出的可自部署即时通讯系统,近期在技术社区引发关注。其核心目标是为有数据自主需求的用户或组织提供完全自托管的聊天解决方案。系统服务端采用Java开发,拆分为im-server、app-server、im-admin与push-server四个模块,分别负责消息收发、用户认证与文件存储、后台管理及离线推送;客户端基于Flutter框架,以单份代码库同时适配Android、iOS、Windows、macOS和Web五个平台,实现真正的一套UI多端一致。

功能方面,CaoIM支持文字、表情、图片、语音、文件及短视频等消息类型,具备引用、转发、撤回、收藏、会话置顶与免打扰等功能;通讯录支持好友申请、备注修改、拉黑、搜索、扫码加好友与入群;群聊集成公告、管理员设置、禁言、入群验证与群昵称管理,并自动拼接成员头像作为群标识。音视频通话目前支持一对一呼叫,采用信令与媒体分离架构,通过STUN/TURN直连传输,保障隐私与带宽效率;呼叫含铃声提示,视频支持本地预览与摄像头切换。

系统支持深色模式、后台通知推送与精细化消息同步:在线实时推送,离线用户上线后主动拉取;已读状态回传发送方,群聊显示“X人已读”。文本消息走长连接,图片与文件上传至app-server(支持本地目录或S3兼容存储),消息体仅保留访问地址。安全机制上,用户登录后获取常规token与imToken双令牌,后台管理系统(Vue 3开发)通过内部令牌调用接口,避免直接操作数据库;默认账号admin/admin123需上线前修改。

部署依赖JDK 17、Maven 3.6、MySQL 5.7(utf8mb4)、Flutter 3+Dart 3.11及Node.js 18,初始化仅需两条SQL建表语句,依次启动服务端模块与Flutter客户端即可。当前版本暂未实现语音转文字、群通话、支付集成与小程序端,属未来规划方向。项目采用宽松开源协议,学习与个人使用免费,商用需授权但无强制费用。全部代码已开源至GitHub与Gitee的cao-im组织下,适合中小团队、教育机构及重视数据主权的组织评估采用。