{"id":17010608,"url":"https://github.com/anlingyi/xechat","last_synced_at":"2025-05-07T01:49:53.796Z","repository":{"id":34600064,"uuid":"176286971","full_name":"anlingyi/xechat","owner":"anlingyi","description":"基于SpringBoot+STOMP协议实现的web聊天室","archived":false,"fork":false,"pushed_at":"2022-06-17T02:06:48.000Z","size":1427,"stargazers_count":190,"open_issues_count":6,"forks_count":55,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-03-31T05:11:13.576Z","etag":null,"topics":["chatroom","java","javascript","springboot","stomp"],"latest_commit_sha":null,"homepage":"https://chat.xeblog.cn:8088","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/anlingyi.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-03-18T13:02:07.000Z","updated_at":"2025-03-10T08:31:50.000Z","dependencies_parsed_at":"2022-07-22T08:32:21.560Z","dependency_job_id":null,"html_url":"https://github.com/anlingyi/xechat","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/anlingyi%2Fxechat","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/anlingyi%2Fxechat/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/anlingyi%2Fxechat/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/anlingyi%2Fxechat/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/anlingyi","download_url":"https://codeload.github.com/anlingyi/xechat/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252798781,"owners_count":21805880,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["chatroom","java","javascript","springboot","stomp"],"created_at":"2024-10-14T06:04:56.320Z","updated_at":"2025-05-07T01:49:53.750Z","avatar_url":"https://github.com/anlingyi.png","language":"Java","readme":"[xechat](https://chat.xeblog.cn:8088)\n===\n\n\u003e 基于SpringBoot+STOMP协议实现的web聊天室\n\n* [目录](#xechat)\n   * [环境](#环境)\n   * [部署](#部署)\n      * [Linux \u0026 Windows](#linux--windows)\n        * [创建目录并授权](#创建目录并授权)\n        * [修改应用地址](#修改应用地址)\n        * [修改百度地图API](#修改百度地图api)\n        * [编译运行](#编译运行)\n   * [功能](#功能)\n      * [登入](#登入)\n      * [发送消息](#发送消息)\n      * [@好友可进行私聊](#好友可进行私聊)\n      * [敏感词检测](#敏感词检测)\n      * [注销](#注销)\n      * [消息撤消](#消息撤消)\n      * [聊天记录](#聊天记录)\n         * [密码加密方式](#密码加密方式)\n   * [v1.2更新](#v12更新)\n      * [接入图灵机器人](#接入图灵机器人)\n      * [配置机器人](#配置机器人)\n      * [新消息通知](#新消息通知)\n\n## 环境\n\n* JDK1.8\n* Maven\n* IDEA\n* Lombok Plugin\n\n## 部署\n\n### Linux \u0026 Windows\n\n\u003e 部署前需先安装配置好 `JDK8` 、`Maven3` 等环境。\n\n#### 创建目录并授权\n\n`Linux` 系统一般需执行此步骤。    \n`Windows` 系统默认创建的目录在项目所处的盘符根目录中，需修改 `application.properties` 里的目录映射配置 \n`file.directoryMapping＝所在盘符:\\\\xechat\\\\`\n\n```\n# 存放日志的目录\nsudo mkdir /var/log/xechat\n# 资源映射的目录\nsudo mkdir /xechat\n# 授权\nsudo chmod 777 /var/log/xechat\nsudo chmod 777 /xechat\n```\n\n#### 修改应用地址\n\n\u003e 此配置会影响到聊天图片和聊天记录等文件的访问，本地部署默认即可，线上服务器部署请修改为服务器公网IP或访问域名。\n\n`application.properties` 配置文件里将 `app.url` 的值修改即可\n\n```\n#项目地址\napp.url=http://localhost:${server.port}\n```\n\n#### 修改百度地图API\n\n\u003e 不改也行。。。\n\n项目中的定位功能使用的是百度地图的API\n\n需将 `ak` 的值替换成自己的\n\n![](https://i.loli.net/2019/04/06/5ca84c07051d7.png)\n\n#### 编译运行\n\nfinalName: `maven`打包的文件名，在`pom.xml`文件中由`\u003cbuild\u003e`标签内的`\u003cfinalName\u003e`指定\n\nenv: 项目运行环境，测试环境`test` 生产环境`prod`\n\n```\nmvn clean install -Dmaven.test.skip=true\njava -jar ${finalName}.jar --spring.profiles.active=${env}\n```\n\n## 功能\n\n\u003e https://xeblog.cn/articles/13\n\n### 登入\n\n\u003e 登入成功后会将用户信息缓存到cookie中\n\n登入界面\n\n![](https://i.loli.net/2019/04/06/5ca79db0e46ca.png\n)\n\n选择头像输入昵称后点击登入按钮\n\n![](https://i.loli.net/2019/04/06/5ca7ad4eca558.png)\n\n![](https://i.loli.net/2019/04/06/5ca79db12d5f8.png)\n\n系统广播上线消息\n\n![](https://i.loli.net/2019/04/06/5ca79db1198e2.png)\n\n### 发送消息\n\n发送文本消息\n\n![](https://i.loli.net/2019/04/06/5ca79db12e464.png)\n\n发送图片消息\n\n![](https://i.loli.net/2019/04/06/5ca79db14f6cf.png)\n\n再次登入两个用户\n\n![](https://i.loli.net/2019/04/06/5ca79db12d397.png)\n\n![](https://i.loli.net/2019/04/06/5ca79db12e764.png)\n\n左侧按钮为显示在线用户列表，右侧按钮为退出聊天室\n\n![](https://i.loli.net/2019/04/06/5ca79db147f7b.png)\n\n### @好友可进行私聊\n\n![](https://i.loli.net/2019/04/06/5ca7a0cd0a49b.png)\n\n![](https://i.loli.net/2019/04/06/5ca7a0cd0b406.png)\n\n![](https://i.loli.net/2019/04/06/5ca7a0cd0bb47.png)\n\n小毅这个用户收不到胖虎和小丸子的私聊信息\n\n![](https://i.loli.net/2019/04/06/5ca7a0cd09e53.png)\n\n### 敏感词检测\n\n\u003e 使用DFA算法检测文本是否包含敏感词（DFA：Deterministic Finite Automaton 确定性有限自动机）\n\n敏感词列表\n\n\u003e 敏感词的配置是在 `resources` 目录下的 `sensitive-word.txt` 文件中，敏感词一行一个\n\n![](https://i.loli.net/2019/04/06/5ca7a0ccb2ef1.png)\n\n发送一个包含敏感词的文本信息（此处输入的敏感词为嘻嘻和哈哈）\n\n![](https://i.loli.net/2019/04/06/5ca7a0cd05b1a.png)\n\n成功被系统河蟹😏 河蟹后的处理是随机返回一个社会主义核心价值观。\n\n\u003e 富强、民主、文明、和谐、自由、平等、公正、法治、爱国、敬业、诚信、友善\n\n![](https://i.loli.net/2019/04/06/5ca7a0cd0aae3.png)\n\n\n过滤日志\n\n![](https://i.loli.net/2019/04/06/5ca7a0cd12e86.png)\n\n### 注销\n\n点击右侧按钮退出聊天室，系统广播离线消息，在线用户列表和在线人数自动更新\n\n![](https://i.loli.net/2019/04/06/5ca7a76746726.png)\n\n点击注销按钮可清除当前的登入信息，不注销则可继续以当前的信息登入\n\n![](https://i.loli.net/2019/04/06/5ca7a0ccf1886.png)\n\n不注销直接登入\n\n![](https://i.loli.net/2019/04/06/5ca7a7673d067.png)\n\n### 消息撤消\n\n双击自己发送的消息弹出撤消提示，确定后即可撤消这条消息（只可撤消3分钟内的消息）\n\n![](https://i.loli.net/2019/04/06/5ca7a7674299c.png)\n\n消息已经撤消，系统广播撤消消息\n\n![](https://i.loli.net/2019/04/06/5ca7a767405c8.png)\n\n![](https://i.loli.net/2019/04/06/5ca7a767447ad.png)\n\n### 聊天记录\n\n聊天记录访问地址 `http://ip:端口/record.html`\n\n进入聊天记录页面需要输入访问密码 默认的访问密码为 `xechat`\n\n#### 密码加密方式\n\n\u003e 先将密码经过 `BASE64` 加密后再进行 `MD5` 的32位小写加密\n\n**加密流程**\n\n 密码 `xechat` 经过 `BASE64` 加密后变为 `eGVjaGF0` ，再进行 `MD5` 32位小写加密后变为 `c85715fec7827f3b388af185b8e7db77`\n\n**修改密码**\n\n`application.properties` 配置文件里将 `chatrecord.password` 的值替换即可\n\n```\n#聊天记录页面访问密码(密码先经过base64加密后再进行32位md5加密)\nchatrecord.password=c85715fec7827f3b388af185b8e7db77\n```\n\n输入密码点击确定\n\n![](https://i.loli.net/2019/04/06/5ca83f71dbaba.png)\n\n密码输入正确后显示聊天记录文件列表，按照 `yyyyMMdd` 的方式每天自动生成一个 `.md` 格式的文件\n\n![](https://i.loli.net/2019/04/06/5ca83f71eeacf.png)\n\n点击列表中的文件可以查看当天的聊天记录\n\n![](https://i.loli.net/2019/04/06/5ca83f724e593.png)\n\n![](https://i.loli.net/2019/04/06/5ca83f7252659.png)\n\n## v1.2更新\n\n### 接入图灵机器人\n\n\u003e [https://xeblog.cn/articles/14](https://xeblog.cn/articles/14)\n\n\u003e 图灵机器人官网 [http://www.turingapi.com](http://www.turingapi.com)  \n\u003e API文档 [https://www.kancloud.cn/turing/www-tuling123-com/718227](https://www.kancloud.cn/turing/www-tuling123-com/718227)\n\n![xechat_v1.2.png](https://i.loli.net/2019/05/09/5cd3ed540d264.png)\n\n### 配置机器人\n\n**修改图灵ApiKey**\n\n![turing_apikey.png](https://i.loli.net/2019/05/09/5cd3fa34df040.png)\n\n`application.properties` 配置文件里修改 `turing.apiKey` 的值\n\n```\n#图灵apikey\nturing.apiKey=xxx\n```\n\n**修改机器人信息**\n\n修改 `cn.xeblog.xechat.constant.RobotConstant` 类中对应常量\n\n```\npackage cn.xeblog.xechat.constant;\n\n/**\n * 机器人相关常量\n *\n * @author yanpanyi\n * @date 2019/4/10\n */\npublic interface RobotConstant {\n    /**\n     * 存储的key\n     */\n    String key = \"robot\";\n    /**\n     * 触发机器人聊天的消息前缀\n     */\n    String prefix = \"#\";\n    /**\n     * 机器人名称\n     */\n    String name = \"小小毅\";\n    /**\n     * 机器人头像\n     */\n    String avatar = \"./images/avatar/robot.jpeg\";\n    /**\n     * 机器人地理位置\n     */\n    String address = \"火星\";\n}\n```\n\n**修改机器人欢迎信息**\n\n修改 `cn.xeblog.xechat.constant.MessageConstant` 类中对应常量\n\n```\npackage cn.xeblog.xechat.constant;\n\n/**\n * 消息模板\n *\n * @author anlingyi\n * @date 2019/5/7\n */\npublic interface MessageConstant {\n    /**\n     * 进入聊天室广播消息\n     */\n    String ONLINE_MESSAGE = \"%s进入了聊天室\";\n    /**\n     * 离开聊天室广播消息\n     */\n    String OFFLINE_MESSAGE = \"%s离开了聊天室\";\n    /**\n     * 机器人欢迎消息\n     */\n    String ROBOT_WELCOME_MESSAGE = \"@%s 欢迎来到聊天室！消息内容以'#'开头的我就能收到哦（PS：双击我的头像与我聊天），\" +\n            \"随时来撩我呀！\";\n}\n\n```\n\n**实际效果**\n\n![xechat_v1.2_1.png](https://i.loli.net/2019/05/09/5cd4175b9b284.png)\n\n![xechat_v1.2_2.png](https://i.loli.net/2019/05/09/5cd4175b98e71.png)\n\n![xechat_v1.2_3.png](https://i.loli.net/2019/05/09/5cd4175b9fb63.png)\n\n![xechat_v1.2_4.png](https://i.loli.net/2019/05/09/5cd4175bb280f.png)\n\n![xechat_v1.2_5.png](https://i.loli.net/2019/05/09/5cd4175bacd75.png)\n\n![靓仔语塞.gif](https://i.loli.net/2019/05/09/5cd4196fd7e4c.gif)\n\n### 新消息通知\n\n\u003e [https://xeblog.cn/articles/22](https://xeblog.cn/articles/22)\n\n通过勾选新消息通知、消息提示音等设置项开启相应功能。\n\n![xechat_v1.2_6.png](https://oss.xeblog.cn/prod/89d1f5d2fa8d41e7b6e8d54014de9919.png)\n\n通知效果\n\n![xechat_v1.2_7.png](https://oss.xeblog.cn/prod/e8fc9629eaff4751aeb7b0e5330ffda5.png)","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fanlingyi%2Fxechat","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fanlingyi%2Fxechat","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fanlingyi%2Fxechat/lists"}