# im_1 **Repository Path**: liuhaobi/im_1 ## Basic Information - **Project Name**: im_1 - **Description**: WebSocket加SpringBoot 实现一个Im客服系统 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 2 - **Created**: 2025-08-14 - **Last Updated**: 2025-08-14 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 即时通讯系统 (IM) 这是一个基于 Spring Boot 的即时通讯系统,支持消息发送、接收、消息存储、心跳检测、用户在线状态管理等功能。 ## 功能特性 - 使用 WebSocket 实现双向通信 - 使用 RocketMQ 进行消息队列处理 - 使用 Redis 管理节点注册和用户路由 - 支持消息持久化存储 - 支持消息确认机制 - 支持用户心跳检测和在线状态维护 ## 技术栈 - Spring Boot - WebSocket - RocketMQ - Redis - JPA - MySQL ## 模块结构 - `WebSocket`: 处理客户端连接、消息收发 - `Message`: 消息实体、消息服务、消息存储 - `RocketMQ`: 消息队列生产者与消费者 - `Redis`: 节点注册、用户路由信息存储 - `Heartbeat`: 用户活跃状态检测与维护 ## 安装与配置 1. 安装 Java 21+、Maven、Redis、RocketMQ、MySQL 2. 配置 `application.yml` 中的数据库、Redis、RocketMQ 相关参数 3. 执行 Maven 构建:`mvn clean package` 4. 启动应用:`java -jar im.jar` ## 使用说明 ### 发送消息 通过 WebSocket 连接后,发送 JSON 格式消息,或通过 HTTP 接口 `/session/send` 发送: ```http master 分支没有前端代码 ,没有用户体系,只是基础的会话机制 1.用户端 localhost:8886/ws?userId=123 { "content":"你好,我是用户", "senderId":123, "receiverId":456 } 2.运营端 localhost:8886/ws?userId=456 { "content":"你好,我是客服", "senderId":456, "receiverId":123 } 后续版本更新 v1,AI,用户体系,权限认证 ,重连,会话分配,消息已读,运营调度,运营端相关的功能 v2,支持消息图片,语音,视频 v3,聊天室,群聊,单聊,朋友圈 ``` ### 消息确认 系统会自动发送消息已读确认,通过 `MessageAckService` 发送 ACK 消息。 ### 获取历史消息 使用 `MessageStorageService` 提供的方法获取两个用户之间的聊天记录。 ### 用户心跳检测 客户端需定期发送心跳包,服务端通过 `HeartbeatMessageHandler` 管理用户活跃状态。 ## 模块组件 - `MessageHandler`: 处理 WebSocket 消息 - `WebSocketHandler`: 管理用户会话连接 - `MessageService`: 消息发送与处理核心服务 - `MessageStorageService`: 消息持久化存储 - `RocketMQ`: 消息队列处理(生产者/消费者) - `NodeRegistry`: 用户路由信息注册到 Redis - `SessionManager`: 管理当前在线用户会话 - `HeartbeatMessageHandler`: 用户活跃状态检测 ## 贡献指南 欢迎提交 Pull Request,请确保代码风格与项目一致,并添加必要的单元测试。 ## 协议 本项目采用 MIT License,请参阅 LICENSE 文件。