Awesome Open Source
Awesome Open Source

xechat

基于SpringBoot+STOMP协议实现的web聊天室

环境

  • JDK1.8
  • Maven
  • IDEA
  • Lombok Plugin

部署

Linux & Windows

部署前需先安装配置好 JDK8Maven3 等环境。

创建目录并授权

Linux 系统一般需执行此步骤。
Windows 系统默认创建的目录在项目所处的盘符根目录中,需修改 application.properties 里的目录映射配置 file.directoryMapping=所在盘符:\\xechat\\

# 存放日志的目录
sudo mkdir /var/log/xechat
# 资源映射的目录
sudo mkdir /xechat
# 授权
sudo chmod 777 /var/log/xechat
sudo chmod 777 /xechat

修改应用地址

此配置会影响到聊天图片和聊天记录等文件的访问,本地部署默认即可,线上服务器部署请修改为服务器公网IP或访问域名。

application.properties 配置文件里将 app.url 的值修改即可

#项目地址
app.url=http://localhost:${server.port}

修改百度地图API

不改也行。。。

项目中的定位功能使用的是百度地图的API

需将 ak 的值替换成自己的

编译运行

finalName: maven打包的文件名,在pom.xml文件中由<build>标签内的<finalName>指定

env: 项目运行环境,测试环境test 生产环境prod

mvn clean install -Dmaven.test.skip=true
java -jar ${finalName}.jar --spring.profiles.active=${env}

功能

https://xeblog.cn/articles/13

登入

登入成功后会将用户信息缓存到cookie中

登入界面

选择头像输入昵称后点击登入按钮

系统广播上线消息

发送消息

发送文本消息

发送图片消息

再次登入两个用户

左侧按钮为显示在线用户列表,右侧按钮为退出聊天室

@好友可进行私聊

小毅这个用户收不到胖虎和小丸子的私聊信息

敏感词检测

使用DFA算法检测文本是否包含敏感词(DFA:Deterministic Finite Automaton 确定性有限自动机)

敏感词列表

敏感词的配置是在 resources 目录下的 sensitive-word.txt 文件中,敏感词一行一个

发送一个包含敏感词的文本信息(此处输入的敏感词为嘻嘻和哈哈)

成功被系统河蟹😏 河蟹后的处理是随机返回一个社会主义核心价值观。

富强、民主、文明、和谐、自由、平等、公正、法治、爱国、敬业、诚信、友善

过滤日志

注销

点击右侧按钮退出聊天室,系统广播离线消息,在线用户列表和在线人数自动更新

点击注销按钮可清除当前的登入信息,不注销则可继续以当前的信息登入

不注销直接登入

消息撤消

双击自己发送的消息弹出撤消提示,确定后即可撤消这条消息(只可撤消3分钟内的消息)

消息已经撤消,系统广播撤消消息

聊天记录

聊天记录访问地址 http://ip:端口/record.html

进入聊天记录页面需要输入访问密码 默认的访问密码为 xechat

密码加密方式

先将密码经过 BASE64 加密后再进行 MD5 的32位小写加密

加密流程

密码 xechat 经过 BASE64 加密后变为 eGVjaGF0 ,再进行 MD5 32位小写加密后变为 c85715fec7827f3b388af185b8e7db77

修改密码

application.properties 配置文件里将 chatrecord.password 的值替换即可

#聊天记录页面访问密码(密码先经过base64加密后再进行32位md5加密)
chatrecord.password=c85715fec7827f3b388af185b8e7db77

输入密码点击确定

密码输入正确后显示聊天记录文件列表,按照 yyyyMMdd 的方式每天自动生成一个 .md 格式的文件

点击列表中的文件可以查看当天的聊天记录

v1.2更新

接入图灵机器人

https://xeblog.cn/articles/14

图灵机器人官网 http://www.turingapi.com
API文档 https://www.kancloud.cn/turing/www-tuling123-com/718227

xechat_v1.2.png

配置机器人

修改图灵ApiKey

turing_apikey.png

application.properties 配置文件里修改 turing.apiKey 的值

#图灵apikey
turing.apiKey=xxx

修改机器人信息

修改 cn.xeblog.xechat.constant.RobotConstant 类中对应常量

package cn.xeblog.xechat.constant;

/**
 * 机器人相关常量
 *
 * @author yanpanyi
 * @date 2019/4/10
 */
public interface RobotConstant {
    /**
     * 存储的key
     */
    String key = "robot";
    /**
     * 触发机器人聊天的消息前缀
     */
    String prefix = "#";
    /**
     * 机器人名称
     */
    String name = "小小毅";
    /**
     * 机器人头像
     */
    String avatar = "./images/avatar/robot.jpeg";
    /**
     * 机器人地理位置
     */
    String address = "火星";
}

修改机器人欢迎信息

修改 cn.xeblog.xechat.constant.MessageConstant 类中对应常量

package cn.xeblog.xechat.constant;

/**
 * 消息模板
 *
 * @author anlingyi
 * @date 2019/5/7
 */
public interface MessageConstant {
    /**
     * 进入聊天室广播消息
     */
    String ONLINE_MESSAGE = "%s进入了聊天室";
    /**
     * 离开聊天室广播消息
     */
    String OFFLINE_MESSAGE = "%s离开了聊天室";
    /**
     * 机器人欢迎消息
     */
    String ROBOT_WELCOME_MESSAGE = "@%s 欢迎来到聊天室!消息内容以'#'开头的我就能收到哦(PS:双击我的头像与我聊天)," +
            "随时来撩我呀!";
}

实际效果

xechat_v1.2_1.png

xechat_v1.2_2.png

xechat_v1.2_3.png

xechat_v1.2_4.png

xechat_v1.2_5.png

靓仔语塞.gif

新消息通知

https://xeblog.cn/articles/22

通过勾选新消息通知、消息提示音等设置项开启相应功能。

xechat_v1.2_6.png

通知效果

xechat_v1.2_7.png


Get A Weekly Email With Trending Projects For These Topics
No Spam. Unsubscribe easily at any time.
javascript (68,100
java (30,382
springboot (261
chatroom (28
stomp (19

Find Open Source By Browsing 7,000 Topics Across 59 Categories