最近在开发一款 在线聊天室 项目,在这里记录一下开发的思路。(持续更新)

目前状况

目前 Wan's Chat 已经拥有以下功能:

  1. 表情包,图片发送
  2. 历史消息,图片查看
  3. @其他用户
  4. 在线人数实时更新
  5. 人工智能(小万)聊天系统
  6. 跨平台访问。

运行状态

用户登录

  1. 客户端 - 连接 -> 服务端
  2. 通过接口在 WAS 检测第三方登录状况。
  3. 服务端完成登录记录,并发送用户加入信息给所有客户端。
  4. 客户端 收到信息 后,渲染用户加入信息,同时更新在线人数。

信息发送

  1. 客户端 - 发送信息 -> 服务端
  2. 服务端,进行用户数据解析,并判断是否激活 AI。

    • 激活AI: 同步信息到所有客户端,同时发送 AI 响应信息。
    • 未激活AI: 正常同步信息到所有客户端。
  3. 客户端: 收到同步信息,将信息渲染至页面。

    • 判断信息来源: 发送者为自己则渲染在右侧。

用户退出

  1. 客户端 - 断开连接 -> 服务端
  2. 服务端完成信息删除,并发送用户退出信息给所有客户端。
  3. 客户端 收到信息 后,渲染用户退出信息,同时更新在线人数。

更新思路

  1. 增加语音转文字服务,方便消息发送。(调用第三方接口实现)
  2. 优化 AI 服务。(腾讯的 “人工智障” 实在是太笨了)| 已完成
  3. 增加消息撤回,回复等高级功能。
  4. 开发多房间系统,每个房间的消息独立。(难度较大)| 已完成

项目截图

Xnip2020-03-13_09-58-02.jpg


2020/03/15 日更新:

这两天完成了以上的第二条和第四条功能。

AI 优化

接入了图灵系统(每日1000条消息限制),如果图灵用完自动切 腾讯AI。

除了接入图灵;还更新了部分消息解析于服务端完成,为图灵系统减轻负担

多房间系统

每个房间会分配一个 Alias ID,通过此ID来匹配当前所在的聊天室。并让用户端的Socket接收到信息后先判断是否需要本房间接收,如若不需则丢弃消息。-- 目前功能还不完善

文件仓库系统

更新文件仓库系统,可永久(应该算吧)分享文件,聊天室内所有人都可下载或预览。
文件全部自动存入第三方对象存储,不会占用本地磁盘。

信息加载优化

使用 Redis 对部分常用信息进行缓存,减少接口与数据库的压力。

Websocket 服务优化

采用第三方工具优化了 websocket 服务,能更快的访问站点:http://cdn.chat.wwsg18.com

图片上传优化

之前的图片上传会直接上传到服务器磁盘,但现在也会自动上传至对象存储中,并优化加载速度。

更新图片

WechatIMG21.jpeg

以上是目前文件仓库功能的截图。

2020/03/16 日更新:

今天对系统进行了部分优化

数据储存服务:

由 Redis 更换为 Mysql 储存,并优化储存格式。

自建群服务:

从官方新建更新为可自建,每个用户最多可创建 5 个聊天室。

启动桌面程序开发

使用 Electron-Vue 构建桌面程序(开发中...)

创建页面截图

newC.jpg

Last modification:March 16th, 2020 at 10:08 pm
如果觉得我的文章对你有用,请随意赞赏