# intrachat
**Repository Path**: linshidream/intrachat
## Basic Information
- **Project Name**: intrachat
- **Description**: IntraChat(引洽)是一款开源、可私有化部署的企业级 IM 即时通信系统,对标微信/钉钉的内部通信架构,主体代码还在不断更新中...
- **Primary Language**: Java
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 6
- **Forks**: 3
- **Created**: 2025-08-09
- **Last Updated**: 2025-08-29
## Categories & Tags
**Categories**: Uncategorized
**Tags**: IM, TCP, Netty
## README
### 📦 项目介绍
IntraChat(引洽)是一款开源、可私有化部署的企业级 IM 即时通信系统,对标微信/钉钉的内部通信架构,IM 服务端基于 **Spring WebFlux + Netty** 构建,具备以下特性:
- 支持 **WebSocket / TCP** 双通道通信
- 自定义 **TLV 协议**,支持长度帧解码(粘包半包处理)
- 支持 **单聊 / 群聊**,支持在线转发 + 离线消息机制
- 支持 **HTTP 发送消息、WS 在线推送隔离架构**
- 内置 **用户多端支持**(一个用户可绑定多个终端)
- 支持 **分布式集群路由与节点转发(协议层可扩展 HTTP + MQ 双协议)**
- 内置路由管理、用户状态注册、节点注册与转发机制
### 🧠 技术选型
**语言与框架**:Java 8、Spring WebFlux、Netty
**协议支持**:HTTP、WebSocket、自定义 TCP(TLV 协议)
**数据库**:MySQL、MongoDB、Elasticsearch
**缓存与注册中心**:Redis
**消息中间件**:RocketMQ
**对象存储**:MinIO
### 🏗️ 通信协议(TLV结构)
```text
| Magic Code | MsgType | BodyLength | MessageBody |
| 2 bytes | 1 byte | 4 bytes | variable length |
```
### 🚀 启动方式
```bash
# 启动 SpringBoot 项目(包含内嵌 Netty Server)
./mvn clean package
java -jar target/intrachat-0.0.1-SNAPSHOT.jar
```
### ✅ 后续规划
- 消息离线存储 / 阅后即焚
- 文件消息(图片/视频)
- 加入 MQ 模式消息分发(Kafka / RocketMQ)
- 分布式负载均衡与容灾机制
- Web前端聊天面板(React / Vue)
### 💬 社区支持与贡献
欢迎使用、Star、Issue 提问、提交 PR!
未来计划提供:
- 支持 **云端历史聊天记录同步**(跨设备无缝同步消息记录,支持时间轴检索与分页加载)
- 内置 **端到端加密的私密聊天模式**(参考 Telegram Secret Chat,消息仅在聊天双方设备解密,不经服务器存储)
### 📄 License
本项目遵循 **Apache License 2.0** 开源协议 [LICENSE](./LICENSE) 发布
### 🧙♂️ 开发者
> 林是梦 👨💻
GitHub / 小红书 / 微信公众号:**@林是梦**
**未来开放技术交流群...**
### 📜 免责声明
- 使用本项目产生的任何直接或间接后果,均由使用者自行承担,与本项目作者及贡献者无关。
- 在部署、使用本项目之前,请确保您所在地区允许此类软件的运行和使用,并已完成相应的备案与合规要求。
- 若您不同意上述任何条款,请立即停止使用并删除本项目的全部代码与数据。