一个基于 webman 的小聊天室 DEMO

王小大

认识 webman

我们公司项目一直使用的 Laravel,部分项目也可能会用到 laravels(swoole),所以我对于 workerman 的关注少之又少。我平时本来就比较习惯逛 LearnKu,也是在今年上半年看到了一篇关于介绍 webman 的帖子,这才知道 walkor 老大居然出了一个基于 workerman 的web框架,一下子就来了兴趣,各种翻论坛看相关帖子,哈哈(就喜欢研究新玩意儿😂)。但是由于工作方面原因,项目周期也比较紧,也就不了了之。直到上周来着,一时兴起,寻思写个小聊天室玩玩,说干就干...

初衷

一开始准备花一晚上,随便撸一个零样式的。后来...原本做后端的,对前端布局、CSS都不在行,折腾不少时间才基于 Bootstrap5 拼出来了下面的两个页面(见笑了🤭)。
效果图

数据以及问题

准备用 Mysql数据库 记录用户信息、以及聊天记录,然后聊天记录通过Redis存储再扫到数据库。但是我没想到更好的更新读取方案,暂时存的Redis没做同步方案。对于这块问题我产生的以下不完善想法:

  • 聊天默认写入Redis,通过定时任务扫入数据库。
    问题:当用户刷新页面后如果从数据库读取数据用于回显,如果首次通过数据库拿记录将不能实时获取最新的聊天记录。
  • 聊天记录写入读取都通过 Redis。
    问题:Redis 和数据库数据什么时候去同步。同时更想听听大家的方案。
  • 聊天记录回显目前是通过握手并验证成功后下发当前房间1小时内的聊天记录
    问题:下发的聊天记录是存储到 JS 的一个数组中的,然后通过 AplineJS for 遍历渲染出来的,如果一小时聊天记录几千上万条浏览器肯定会卡,想听听大家的优化方案。

项目地址

https://github.com/getda/Liao

452 1 0
1个评论

as5739

很棒,学习了!

  • 暂无评论

王小大

310
积分
0
获赞数
0
粉丝数
2022-02-19 加入
🔝