最近在开发一款 在线聊天室 项目,在这里记录一下开发的思路。(持续更新)
目前状况
目前 Wan's Chat 已经拥有以下功能:
- 表情包,图片发送
- 历史消息,图片查看
- @其他用户
- 在线人数实时更新
- 人工智能(小万)聊天系统
- 跨平台访问。
运行状态
用户登录
- 客户端 - 连接 -> 服务端
- 通过接口在 WAS 检测第三方登录状况。
- 服务端完成登录记录,并发送用户加入信息给所有客户端。
- 客户端 收到信息 后,渲染用户加入信息,同时更新在线人数。
信息发送
- 客户端 - 发送信息 -> 服务端
服务端,进行用户数据解析,并判断是否激活 AI。
- 激活AI: 同步信息到所有客户端,同时发送 AI 响应信息。
- 未激活AI: 正常同步信息到所有客户端。
客户端: 收到同步信息,将信息渲染至页面。
- 判断信息来源: 发送者为自己则渲染在右侧。
用户退出
- 客户端 - 断开连接 -> 服务端
- 服务端完成信息删除,并发送用户退出信息给所有客户端。
- 客户端 收到信息 后,渲染用户退出信息,同时更新在线人数。
更新思路
- 增加语音转文字服务,方便消息发送。(调用第三方接口实现)
- 优化 AI 服务。(腾讯的 “人工智障” 实在是太笨了)| 已完成
- 增加消息撤回,回复等高级功能。
- 开发多房间系统,每个房间的消息独立。(难度较大)| 已完成
项目截图
2020/03/15 日更新:
这两天完成了以上的第二条和第四条功能。
AI 优化
接入了图灵系统(每日1000条消息限制),如果图灵用完自动切 腾讯AI。
除了接入图灵;还更新了部分消息解析于服务端完成,为图灵系统减轻负担 。
多房间系统
每个房间会分配一个 Alias ID,通过此ID来匹配当前所在的聊天室。并让用户端的Socket接收到信息后先判断是否需要本房间接收,如若不需则丢弃消息。-- 目前功能还不完善
文件仓库系统
更新文件仓库系统,可永久(应该算吧)分享文件,聊天室内所有人都可下载或预览。
文件全部自动存入第三方对象存储,不会占用本地磁盘。
信息加载优化
使用 Redis 对部分常用信息进行缓存,减少接口与数据库的压力。
Websocket 服务优化
采用第三方工具优化了 websocket 服务,能更快的访问站点:http://cdn.chat.wwsg18.com
图片上传优化
之前的图片上传会直接上传到服务器磁盘,但现在也会自动上传至对象存储中,并优化加载速度。
更新图片
以上是目前文件仓库功能的截图。
2020/03/16 日更新:
今天对系统进行了部分优化
数据储存服务:
由 Redis 更换为 Mysql 储存,并优化储存格式。
自建群服务:
从官方新建更新为可自建,每个用户最多可创建 5 个聊天室。
启动桌面程序开发
使用 Electron-Vue 构建桌面程序(开发中...)
什么时候放出来
是指开源吗?
可以可以