Java网络聊天室——OverThinker-ChatRoom


---项目专栏---


🚀 Java Chatroom 实时聊天室系统

一个基于 Spring BootWebSocket 技术实现的轻量级实时聊天室项目。

✨ 项目概述

这是一个采用 前后端分离 架构的 Web 聊天应用。它专注于提供一个稳定、实时的消息通信平台,支持用户认证、好友管理、以及核心的一对一私聊功能。

特性 描述
实时通信 基于 WebSocket 实现,消息秒级推送。
核心功能 用户注册登录、好友列表、私聊会话、消息历史记录。
后端架构 Spring Boot 配合 MyBatis,快速构建 RESTful API。
前端技术 传统 HTML/CSS/JavaScript + jQuery,轻量易维护。

📸 界面展示 (Screenshots)

登录与注册

登录页面

注册页面

聊天主界面



⚡ 项目体验说明

先看说明!!!

目前该项目已部署到云服务器上:

体验地址:
http://114.132.122.97:8080/login.html

开源仓库:
https://gitee.com/plthjlsh/overthinker_-chat-room (Gitee)
https://github.com/OverThinker13/OverThinker_ChatRoom (Github)
注意:
此项目暂未完善添加好友功能,因此就算注册了新用户也无法和任何人聊天,只能在我这边往数据添加好友数据才行(也可以跟我说你的用户名,我可以查到并且帮你连接对应的好友,因此我在这里提供两个匿名账号以供测试(里面的好友只有我 K以及两个相互的匿名账号好友 ),由于设置了禁止多开功能,最多同时只能有一个账号登录!如果同时登陆后来的用户会顶掉前面的用户!欢迎大家前来体验!

账号一:Thinker 密码:12208

账号二:Thinker2 密码:12208

🛠️ 技术栈一览

类别 技术名称 角色与描述
后端框架 Spring Boot 2.7.6 快速开发 Web 应用,简化配置。
实时通信 Spring WebSocket 实现客户端与服务器的双向持久连接。
数据访问 MyBatis 灵活的持久层框架,SQL 与代码分离。
数据库 MySQL 关系型数据库,存储用户信息和聊天记录。
构建工具 Maven 项目依赖管理与构建。
前端基础 HTML/CSS/JS 负责页面结构、样式和交互逻辑。
交互库 jQuery/Ajax 简化 DOM 操作和发起异步 HTTP 请求。

🏗️ 系统架构与数据流

本项目最核心的部分是 Spring Boot + WebSocket 实现的实时通信机制。

架构示意图

本项目采用经典的三层架构(Controller/Service/Dao)配合 WebSocket 的通信模型。

核心通信流程:WebSocket

  1. 用户通过 HTTP /login 登录成功后,获取会话信息。
  2. 用户发起 WebSocket 连接请求到 /WebSocketMessage
  3. 服务器将用户 ID 和对应的 WebSocket 会话 (Session) 绑定存储。
  4. 用户 A 发送消息到服务器(通过 WebSocket)。
  5. 服务器根据消息中的目标用户 ID 查找对应的 WebSocket Session。
  6. 服务器通过目标 Session 将消息实时推送给用户 B。

📁 项目结构概览

清晰的模块化结构,便于开发者理解和维护:

复制代码
java_chatroom/
├── src/
│   ├── main/
│   │   ├── java/com/example/java_chatroom/
│   │   │   ├── api/           # 🌐 Controller 层
│   │   │   ├── component/     # 🔌 组件类
│   │   │   ├── config/        # ⚙️ 配置类
│   │   │   └── model/         # 📦 数据模型
│   │   ├── resources/
│   │   │   ├── mapper/        # 📜 MyBatis XML 映射文件
│   │   │   └── static/        # 🖥️ 前端静态资源 (HTML/CSS/JS)
│   │   └── db.sql             # 💾 数据库初始化脚本
├── pom.xml                    # Maven 依赖配置
└── README.md                  # 项目说明文档 (当前文件)

🗃️ 数据库设计 (MySQL)

系统采用 5 个核心数据表来实现用户关系和消息存储。

核心表结构关系图

关键数据表

在这里插入图片描述

表名 描述 关键字段 关系说明
user 用户基本信息 userId, username, password 存储登录凭证
friend 用户好友关系 userId, friendId 记录谁是谁的好友
message_session 会话信息 sessionId, lastTime 私聊会话的主键
message_session_user 会话用户关联 sessionId, userId 多对多:一个会话关联多个用户 (用于扩展群聊)
message 消息内容 messageId, fromId, sessionId, content, postTime 存储具体的聊天记录

🎯 核心功能模块与 API

项目主要通过 RESTful API 和 WebSocket 端点实现功能。

认证与用户信息

模块 接口/端点 方式 描述
用户注册 /register POST 创建新用户
用户登录 /login POST 校验并建立用户会话
获取信息 /userInfo GET 获取当前登录用户的基本信息

好友与会话管理

模块 接口/端点 方式 描述
获取列表 /friendList GET 查看当前用户的所有好友
获取列表 /sessionList GET 查看所有进行中的私聊会话
创建会话 /session POST 与指定好友创建一个新的会话

消息服务

模块 接口/端点 方式 描述
历史消息 /message GET 根据 sessionId 分页获取历史聊天记录
实时推送 /WebSocketMessage WebSocket 核心:建立实时双向通信通道

⚙️ 环境与运行指南

🔧 运行环境要求

  • Java Development Kit (JDK): 1.8 或更高版本
  • MySQL Server: 5.7 或更高版本
  • Maven: 3.6 或更高版本

📥 步骤

  1. 克隆项目:

    bash 复制代码
    git clone <repository-url>
  2. 初始化数据库:

    • 确保 MySQL 服务运行,并创建一个名为 java_chatroom 的数据库。

    • 执行 SQL 脚本:

      bash 复制代码
      mysql -u root -p < src/main/java/db.sql
  3. 配置数据库连接:

    • 打开 src/main/resources/application.yml 文件。
    • 修改 usernamepassword 为您的 MySQL 账户信息。
    yaml 复制代码
    spring:
      datasource:
        # ... url: jdbc:mysql://127.0.0.1:3306/java_chatroom? ...
        username: root
        password: your_password # <-- 替换您的密码
  4. 运行项目:

    bash 复制代码
    mvn clean install # 编译和打包
    mvn spring-boot:run # 启动 Spring Boot 应用
  5. 访问应用:

    打开浏览器访问:http://localhost:8080/login.html


🌟 功能特性总结

  1. 用户认证体系:
    • 支持用户注册新账号。
    • 实现基于会话的登录校验。
  2. 高效实时通信:
    • 利用 WebSocket 实现消息的毫秒级推送。
    • 支持一对一私密聊天。
  3. 完善的消息与会话管理:
    • 自动管理私聊会话的创建与激活。
    • 持久化存储消息记录,支持查看历史消息。
  4. 基础的好友关系:
    • 展示当前用户的好友列表。

💡 Future Enhancements (未来展望)

本项目可进一步扩展以实现更丰富的功能:

  • 好友请求功能: 实现用户搜索、发送/接受好友请求的完整流程 (当前需手动修改 DB)。
  • 个性化展示: 用户添加头像,个性签名等。
  • 群聊支持: 扩展会话模型,支持多人聊天室和群组管理。
  • 消息类型扩展: 支持发送图片、文件和表情包。
  • 用户状态管理: 实时显示用户的在线/离线状态和最后活跃时间。
  • UI/UX 优化: 引入更现代的前端框架或库,实现响应式设计。

相关推荐
漂亮的小碎步丶5 小时前
【4】Spring Boot项目中Spring核心容器原理详解
java·后端·spring
sdszoe49225 小时前
思科设备密码与远程telnet管理
网络·智能路由器·telnet·思科网络设备远程管理
过期动态5 小时前
JDBC进阶篇:拓展功能与连接池运用详解
java·开发语言·数据库·mysql·oracle·intellij-idea·mybatis
applebomb5 小时前
经济、能打的vibe coding后端组合:IDEA+Claude Code(WSL)+GLM4.6安装与配置
java·idea·ai编程·vibecoding
Biteagle5 小时前
P2PK:比特币的「原始密码锁」与比特鹰的技术考古
网络·网络协议·p2p
布伦鸽5 小时前
C# WPF -MaterialDesignTheme 找不到资源“xxx“问题记录
开发语言·c#·wpf
枫叶丹45 小时前
【Qt开发】Qt窗口(十) -> QInputDialog 输入对话框
c语言·开发语言·数据库·c++·qt
杰瑞不懂代码5 小时前
基于 MATLAB 的 BPSK 在 AWGN 信道下误码率仿真与性能分析
开发语言·网络·matlab
zore_c5 小时前
【C语言】EasyX图形库——实现游戏音效(详解)(要游戏音效的看过来!!!)
c语言·开发语言·经验分享·笔记·游戏