# LiteWebChat
**Repository Path**: float-like-dream/LiteWebChat
## Basic Information
- **Project Name**: LiteWebChat
- **Description**: 基于最新HTML5技术,实现网页上的即时通信系统,支持安卓/PC浏览器,用户无需安装任何软件/插件就能在网页即时收发消息;可适用于客服,在线讨论区,企业内部交流等场景。
- **Primary Language**: Java
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: https://f12.ink
- **GVP Project**: No
## Statistics
- **Stars**: 36
- **Forks**: 8
- **Created**: 2022-08-04
- **Last Updated**: 2024-10-11
## Categories & Tags
**Categories**: Uncategorized
**Tags**: SpringCloud, Netty, WebSocket, IM, chat
## README
# LiteWebChat
#### 项目介绍
基于最新HTML5技术,实现网页上的即时通信系统,支持安卓/PC浏览器,用户无需安装任何软件/插件就能在网页即时收发消息;可适用于客服,在线讨论区,企业内部交流等场景。
支持大部分类型消息的发送和解析,如文字,表情,图片,语音,视频,文件。支持视频录制,视频语音播放(包括音乐类文件),消息撤回,屏蔽用户,管理员权限(禁言,限制登录),所有者权限(设置管理员,设置头衔,发布公告等),个性化设置(背景图自定义,黑暗主题,气泡颜色等),消息通知,来电铃声,全员禁言等功能
使用WebRTC实现视频语音通话技术,同时支持拒接、忽略、屏蔽操作
公共接口,隐私接口(如聊天记录),ws消息传输均已加密,使用自研加密模块保证消息不被其他人监听和篡改,秘钥交换使用图片伪装,两重时间检查和三重签名检查;模块还支持参数加密,参数校验,重放拦截,时间、IP、UA检查等 [参考文档](https://jaedoq3bux.feishu.cn/docx/Diavddup9oB08Ax8di6c2gU1nnd)。
目前 这个项目已停止维护
#### 系统结构
```
|----> UserManager ---------|
-------------- | | ------> SocketRedisManager
webchat-client -------> SocketEndpoint -------|----> AuthnManager --------|
-------------- |
|----> MessageParser
⇑
[webchat-common] |---> message
⇓ | | ------> BaiduSpeech
|---> resource --------|
-------------- | | ------> ResourceStorage
webchat-server --------|---> group
-------------- | |---> admin
|---> user ------------|
| |---> owner
| | ------> WX
|---> login ----------> shiro ----------|
| ------> QQ
| -----> CamouflagePublicKey
| ---> Exchange -------|
-------------- | | -----> SignatureGenerator
webchat-secure --------| | -----> MappedRepeatValidator
-------------- | | ----> RepeatValidator --------|
| ---> Validator ----> SecureRequestFilter-----| | -----> RedisRepeatValidator
| ----> SignatureValidator
```
消息解析器
```
| ------> UserMessageHandler --------> GroupMessageHandler
|
[MessageParser] ------> BaseMessageHandler -----|
| | -------> SysMessageHandler
| ------> BaseSysMessageHandler ------|
| -------> WebRTCMessageHandler
```
命令解析器
```
| -----> GroupCommand ------------> GroupManager
|
| |------> GroupManager
[ConsumerListener] -----> CommandHandler -------| -----> UserCommand ------|
| |------> UserManager
| | ------> GroupManager
| -----> AuthnCommand ------------> AuthnManager ------|
| ------> UserManager
```
推荐JDK11
* 后端:Spring Boot、Spring Cloud、Mybatis Plus、Shiro、MySQL、Redis、Kafka、Netty、Nacos、OpenFeign
#### 依赖及功能
* MySQL 5.7.1
数据持久化储存,包括聊天记录、用户信息、操作日志等
* Redis 7.0.4
未读消息计数
Token令牌缓存及验证
所有者权限扩展
公告储存
ResourceURL资源缓存
屏蔽列表缓存
微信UUID缓存及验证
禁言限制登陆标记
刷屏统计
Session持久化
* Kafka 3.0.1 Topic
MESSAGE - 聊天记录
LOGGER - 日志推送
USER_COMMAND - 用户相关命令
GROUP_COMMAND - 群组相关命令
AUTHN_COMMAND - 权限相关命令
* Nacos 2.2.0
注册中心
配置中心
* 系统邮箱账号
用于修改密码/找回密码功能发送验证码
* 微信公众号
微信快捷登录功能
* AList/FTP
文件持久化储存
#### 扩展功能
* @WeChatRedirect - 微信登录重定向标记,标记此注解的方法将对外开放[GET]请求并允许跨域,通过WxAuth2Request扫描控制器标记的注解,动态配置微信授权地址
* ResourceStorage - 通用资源储存接口,默认实现了两种(AList,FTP),可根据业务需求手动实现储存方式(如FastDFS),Spring会优先装配自定义储存方式
* CommandHandler - 系统命令处理接口,通过命令枚举和Bean名匹配的方式动态执行命令,也可指定@Command注解手动匹配命令
#### 引用
[[AList] 一个支持多种存储的文件列表程序](https://github.com/alist-org/alist)
[[netty-websocket-spring-boot-starter] 基于netty的轻量级的高性能socket服务器](https://github.com/YeautyYE/netty-websocket-spring-boot-starter)