栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java > SpringBoot

Netty轻松实现聊天室,附带数据记录,聊天历史

SpringBoot 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Netty轻松实现聊天室,附带数据记录,聊天历史

什么功能?
  • 群聊无限制

  • 记录用户群聊信息

  • 下次登录显示聊天历史

  • 消息发送速度(光速)

  • 聊天历史显示(可配置最近10条)

如果你觉得还不够?那么下一个组件可能会更加满足你哦!不过本次先介绍一下这次我们的几个功能的具体实现还有我的一些思路。(事实上已经出新版本了)

项目思路

对于各位大神来说,实现一个实时通信的聊天页面没有什么难度,不过加一些具体的功能可能就需要麻烦一点了。

本次我选择SpringBoot2.0.2还有Netty4.1.28这两个版本来结合使用。

SpringBoot集成了WebSocket所以开发通信流比较简单,Netty是一个多线程可高并发的框架,使用netty可以减少很多对于消息流的安全等处理。

那么聊天系统最重要的就是消息的实时推送,所以不要在消息的处理中做太多操作,可是如果要记录历史消息,就一定涉及数据库的CRUD操作,需要怎么处理呢?

我一开始想到了定时器,我先注入一个临时缓存,存储每个用户的消息(在Netty消费信息的时候),然后每天固定的时间去跑定时器(对缓存数据进行数据库存储,清空临时缓存),可是如果我的定时时间是晚上12点,那么用户早上聊天的信息,中午重新登录的时候还是没有的。

于是我又想到了异步任务,但是要什么时候去执行呢?

因为每次要最新的聊天历史,那么我暂时想到的是每个用户离开聊天室的时候,针对于它们的聊天记录进行异步执行。

好在SpringBoot对于异步任务的兼容也很好处理。

之后我用Freenarjer组件,引用页面为模板,将历史记录的最新10条与模板一起加载为页面!

这样一个小小的聊天室就完成啦!

版本不同可能会有相关的代码改动

GitHub

本项目的开源地址:InChat
项目介绍:【预计终版仿腾讯IM项目,目前迭代中…】基于Netty4与SpringBoot,聊天室WebSocket(文字图片)加API调用Netty长链接执行发送消息(在线数、用户列表)、Iot物联网-MQTT协议、TCP/IP协议单片机通信,异步存储聊天数据
下载版本:1.0.0

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/235180.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号