zoukankan      html  css  js  c++  java
  • 【开源】Netty轻松实现聊天室,附带数据记录,聊天历史

    阅读本文约“2.5分钟”


    听说快七夕······

    不对,这不是今天的主题,嘿嘿。

    今天说说一个小的网页聊天室,功能如下

     群聊无限制
    
    记录用户群聊信息
    
    下次登录显示聊天历史
    
    消息发送速度(光速)
    
    聊天历史显示(可配置最近10条)
    
    

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


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

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

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

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

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

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

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

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

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

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

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

    老规矩!

    GitHub地址:https://github.com/UncleCatMy...

    名称:UncleCatMySelf/InChat

    如果本文对你有所帮助,欢迎关注技术公众号

    ___-

  • 相关阅读:
    Intellij IDEA 一些不为人知的技巧
    IDEA配置GIT
    返回数据
    IDEA字体设置
    @RequestParam
    @RequestMapping
    基于jquery fly插件实现加入购物车抛物线动画效果,jquery.fly.js
    js倒计时代码 适合于促销-倒计时代码
    phpstorm 10 注册码
    dispaly:table-cell,inline-block,阐述以及案例
  • 原文地址:https://www.cnblogs.com/UncleCatMySelf/p/9734987.html
Copyright © 2011-2022 走看看