立项是为了自建一套数据可控、多端统一的实时即时通讯产品,解决通用社交软件在团队协作里权限粗、会话和文件难追溯、长消息列表卡顿,以及 Web、桌面、移动端能力割裂的问题。业务面向企业内部沟通和社群协作:用户需要稳定的一对一私聊和群聊、可靠的未读与已读、图片文件视频传输,以及群主对成员、禁言和入群申请的治理,并在同一套账号和协议下完成多端收发。
点击空白处退出提示
立项是为了自建一套数据可控、多端统一的实时即时通讯产品,解决通用社交软件在团队协作里权限粗、会话和文件难追溯、长消息列表卡顿,以及 Web、桌面、移动端能力割裂的问题。业务面向企业内部沟通和社群协作:用户需要稳定的一对一私聊和群聊、可靠的未读与已读、图片文件视频传输,以及群主对成员、禁言和入群申请的治理,并在同一套账号和协议下完成多端收发。
项目包含账号认证、会话列表、私聊、群聊治理、联系人、消息搜索、文件与富媒体、表情贴纸、消息通知,以及桌面端发布更新和移动端。认证支持注册登录、令牌刷新和手机号找回密码。私聊支持文本、图片、文件、视频、引用回复、转发、两分钟内撤回与重新编辑、正在输入和已读回执。群聊支持建群解散、成员管理、群主/管理员/成员权限、入群审核、禁言、@提醒和系统消息。会话列表统一展示私聊与群聊,带未读角标、最后一条预览和在线状态。联系人可发起会话,关键词可跨会话搜索并跳回原消息。媒体支持图片预览、视频播放和链接预览,输入区支持表情与贴纸,页面未聚焦时有新消息通知。桌面端提供安装包下载和自动更新,移动端覆盖登录与聊天收发。
我负责从实时协议到 Web、桌面、移动端的实现。后端用 Go(Gin)、PostgreSQL、Redis 和 WebSocket:连接按用户和群组分发,支持多端同时在线;鉴权用 JWT,登出后把令牌写入 Redis 黑名单。消息顺序不用雪花 ID,而用毫秒时间戳加 Redis 自增序列生成排序键,前端用字典加有序键渲染,避免乱序、临时消息回填后出现空洞,以及虚拟列表滚动错位。Web 端是 React、TypeScript 和 Vite,消息列表用虚拟滚动,并处理上拉历史时的跳动和切换会话后的滚动位置。群权限在服务端校验,禁言是否过期在发消息时实时判断。移动端用 Flutter 和 Riverpod,桌面端用 Electron,发布服务用 Fastify 做多应用版本上传、回滚和下载页。难点集中在长连接乱序、乐观发送与正式消息对齐、图文复合消息按组撤回,以及万级消息下虚拟列表的滚动稳定。




评论