springboot+vue3+mysql+websocket实现的即时通讯软件

news2025/4/22 1:33:21

项目演示

即时通讯软件项目演示

业务架构

技术栈

  • 后端
    • 选用编程语言 Java
    • web框架SpringBoot
    • db MySQL 持久存储
    • nosql 缓存 Redis
    • 全双工通信框架 WebSocket
  • 前端
    • 前端框架Vue3
    • Typescript
    • UI样式 Css、ElementPlus
    • 网页路由 vue-router
    • 全双工通信框架Websocket

功能完成情况

已实现功能

  • 用户登录
  • 用户注册
  • 加好友
  • 删除好友
  • 拉黑好友
  • 好友搜索与列表
  • 发起群聊
  • 消息单聊
  • 群聊
  • 群成员列表模块
  • 用户信息查看

未实现功能

  • 聊天消息模块
    • 消息提醒
    • 群公告
    • 群成员权限管理
    • 视频/图片/文件消息发送
    • 语音通话
    • 视频通话
  • 好友与通讯录模块
    • 星标联系人
    • 群邀请与分享
  • 全局搜索模块
  • 智能机器人模块
  • 直播模块
  • 额外功能

功能概述与演示

注册 

接口介绍

接口请求类型入参出参
/api/register/userPOST{
    "phone": "13333331333",
    "password": "3",
    "userName": "用户"
}
{
    "success": true,
    "code": 200
}

功能演示

用户注册功能演示

密码登录

接口介绍

接口请求类型入参出参(注意这里的密码和用户id尽量不返回也可以加密处理)
/api/user/loginPOST{
    "phone": "13333331333",
    "password": "3"
}
{
    "success": true,
    "data": {
        "user": {
            "id": 1067,
            "phone": "13333331333",
            "password": "$2a$10$23XaLqWQcdGHduNBMoA2iuHyLO4VPgjYpZgFE5aQ8YMhPLgYVN2S6",
            "userName": "用户",
            "avatar": "https://picsum.photos/60",
            "createTime": "2025-04-20T20:13:01",
            "updateTime": "2025-04-20T20:13:01"
        },
        "token": "641ca53c42604b3dbbb7792c6484a767"
    },
    "code": 200
}

功能演示

用户密码登录

发送验证码

接口介绍

接口请求类型入参(Query Param)出参(注意这里的密码和用户id尽量不返回也可以加密处理)
/api/user/code?phone=13333331333POST
    phone=13333331333
 
{
    "success": true,
    "data": {
        "code": "346413"//验证码有效期5分钟
    },
    "code": 200
}

验证码登录

接口介绍

接口请求类型入参出参(注意这里的密码和用户id尽量不返回也可以加密处理)
/api/user/login/codePOST{
    "phone": "13333331333",
    "password": "3"
}
{
    "success": true,
    "data": {
        "user": {
            "id": 1067,
            "phone": "13333331333",
            "password": "$2a$10$23XaLqWQcdGHduNBMoA2iuHyLO4VPgjYpZgFE5aQ8YMhPLgYVN2S6",
            "userName": "用户",
            "avatar": "https://picsum.photos/60",
            "createTime": "2025-04-20T20:13:01",
            "updateTime": "2025-04-20T20:13:01"
        },
        "token": "641ca53c42604b3dbbb7792c6484a767"
    },
    "code": 200
}

功能演示

用户验证码登录

加好友

接口介绍

接口请求类型入参出参
/api/friends/friend-applyPOST{
    "applyUserId": 1055,
    "reason": "加好友"
}
{
    "success": true,
    "code": 200
}

功能演示

加好友请求

单聊

接口介绍

接口请求类型入参出参
/api/chat/sendPOST{
    "id": "",
    "sendUser": 1055,
    "receiveUser": 1065,
    "message": "😊",
    "notRead": "0",
    "chatType": "private",
    "groupId": "4a6b8ef8-0dd0-4089-81b4-07e30c6dff3d",
    "createTime": "",
    "updateTime": "",
    "content": "😊"
}
{
    "success": true,
    "code": 200
}

功能演示

单聊

群聊

接口介绍

接口请求类型入参出参
/api/chat/sendPOST{
    "id": "",
    "sendUser": 1055,
    "receiveUser": 1065,
    "message": "😊",
    "notRead": "0",
    "chatType": "group",
    "groupId": "4a6b8ef8-0dd0-4089-81b4-07e30c6dff3d",
    "createTime": "",
    "updateTime": "",
    "content": "😊"
}
{
    "success": true,
    "code": 200
}

功能演示

群聊

群设置

接口介绍

接口请求类型入参(Query Param)出参
/api/group/getGroupMember?groupId=4a6b8ef8-0dd0-4089-81b4-07e30c6dff3dGETgroupId=4a6b8ef8-0dd0-4089-81b4-07e30c6dff3d

{
    "success": true,
    "data": [
        {
            "id": 1065,
            "phone": "13313090333",
            "password": "$2a$10$GwEKhLeiZWhGJs8xdWaVnex28cxuVIHkHpQLa6/yVXCZbGUaSh12C",
            "userName": "测试用户注册",
            "avatar": "https://picsum.photos/69",
            "createTime": "2025-04-20T16:18:02",
            "updateTime": "2025-04-20T17:35:21"
        },
        {
            "id": 1055,
            "phone": "13689663339",
            "password": "$2a$10$rFPIQuKW1c7ndozOQM5EkO9JIGd4DJrlQtdZpi9cNv7DGg2..EDGK",
            "userName": "测试用户t",
            "avatar": "https://picsum.photos/61",
            "createTime": "2025-02-04T16:07:03",
            "updateTime": "2025-04-14T13:52:19"
        },
        {
            "id": 1063,
            "phone": "13389663331",
            "password": "$2a$10$2FHzcu9DCVh.Zvx9cRR4WuKJm/xNC6uyR9BCivcT0bxmwv4ye/4VW",
            "userName": "测试用户e",
            "avatar": "https://picsum.photos/66",
            "createTime": "2025-04-20T15:37:22",
            "updateTime": "2025-04-20T17:35:21"
        }
    ],
    "code": 200
}

功能演示

群设置

单聊好友设置

接口介绍

接口请求类型入参(Query Param)出参
/api/group/getGroupMember?groupId=GETgroupId=

{
    "success": true,
    "data": [],
    "code": 200
}

功能演示

单聊好友设置

后续功能开发

后续会持续完成未完成的功能

会考虑如下3个方向持续完善

  • 功能持续强化和优化,如消息已未读状态、智能机器人消息、视频通话、文件消息、语音消息、全局搜索、直播、群邀请与分享
  • 微服务拆分,当前的架构为单体服务架构,后续会拆分成微服务,springcloud实现
  • 当前的项目为Java开发完成的,会考虑用go语言再实现一次

项目地址与部署 kChat_web

项目前端地址: https://github.com/enjoykanyu/kChat_web/

项目后端地址:https://github.com/enjoykanyu/chat_serve/

项目后端部署:项目部署所需资源和配置请参考application.yml文件,启动springboot

项目前端资源下载与部署:

  • 下载依赖资源 npm -i
  • 部署 npm run dev

贡献与提问

本人开发能力有限,项目中可能会有部分bug,若对于本项目有任何问题和bug,可以随时在githup上提issue

最后 - 觉得项目不错的话,欢迎star支持下,感谢🫰  

对于项目有任何问题欢迎提问和提issue

同时欢迎对本项目push贡献

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2339775.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于 Spring Boot 瑞吉外卖系统开发(五)

基于 Spring Boot 瑞吉外卖系统开发(五) 删除分类 分类列表中每条分类信息右侧提供了一个“删除”按钮,当需要将已经存在的分类信息删除时,可以通过单击“删除”按钮实现。 请求路径为/category,携带参数id&#xf…

【Web部署问题】在Tomcat中部署web项目出现http状态-404 -未找到详细解决方案

部署完tomcat记得在选中要运行的工件。 如果没有工件,或者工件有缺失东西,去这里配置工件,

Linux——Shell编程之正则表达式与文本处理器(笔记)

目录 基础正则表达式 1:基础正则表达式示例 (4)查找任意一个字符“.”与重新字符“*” (5)查找连续字符范围“{ }” 文本处理器 一、sed工具 二、awk工具 (1)按行输出文本 (2&#xff0…

05-DevOps-Jenkins自动拉取构建代码

新建Gitlab仓库 先在Gitab上创建一个代码仓库,选择创建空白项目 安装说明进行填写,然后点击创建项目 创建好的仓库是空的,什么都没有 新建一个springboot项目,用于代码上传使用。 只是为了测试代码上传功能,所以代码…

SRS transcode支持 h264_nvenc 硬件解码方案

文章目录 SRS transcode支持 h264_nvenc 硬件解码方案1、修改文件2、重新编译3、使用 SRS transcode支持 h264_nvenc 硬件解码方案 SRS 是开源的流媒体服务,但在使用 GPU 服务器时,想要通过硬件加速,目前官方是不支持的,所以简单…

阿里云服务器搭建开源版禅道

一,下载地址:禅道11.5版本发布,主要完善细节,修复bug,新增动态过滤机制 - 禅道下载 - 禅道项目管理软件 下载地址二: 禅道21.6.stable 实现旧编辑器撰写的文档无感升级至新版编辑器 - 禅道下载 - 禅道项目…

怎么用面向对象和状态机架构,设计一个通用的按键检测功能?

说起按键检测,在座的各位,哪个没被它折磨过? 我刚入门时,为了实现一个简单的按键功能,硬生生写了几十行代码,各种 if...else 嵌套,逻辑绕得我自己都头晕。 更可气的是,辛辛苦苦写完…

Java基础系列-LinkedList源码解析

文章目录 简介LinkedList 插入和删除元素的时间复杂度?LinkedList 为什么不能实现 RandomAccess 接口? LinkedList 源码分析Node 定义初始化获取元素插入元素删除元素遍历链表 简介 LinkedList 是一个基于双向链表实现的集合类,经常被拿来和…

qwen 14B模型配置文件,层名称weight_map. 28GB

qwen 14B模型配置文件,层名称weight_map. 28GB 目录 qwen 14B模型配置文件,层名称weight_map. 28GBmetadata(元数据)weight_map(权重映射)lm_head.weightmodel.layersmlp.{proj_type}.weightpost_attention_layernormself_attn.{proj_type}.{bias_or_weight}model.norm.w…

LVDS系列8:Xilinx 7系可编程输入延迟(一)

在解析LVDS信号时,十分重要的一环就是LVDS输入信号线在经过PCB输入到FPGA中后,本来该严格对齐的信号线会出现时延,所以需要在FPGA内部对其进行延时对齐后再进行解析。 Xilinx 7系器件中用于输入信号延时的组件为IDELAYE2可编程原语&#xff0…

【Oracle专栏】函数中SQL拼接参数 报错处理

Oracle相关文档,希望互相学习,共同进步 风123456789~-CSDN博客 1.背景 最近同事反馈了一个很奇怪的问题,即有一个函数,入参是当前年月,主要作用是通过SQL语句将不合规的数据插入到指定表中,插入数据时带上入参的年月参数。当前问题:单独测试SQL没有问题可以执行成功,…

自然语言处理(NLP)领域大图

以下是一份自然语言处理(NLP)与大模型领域的领域大图,涵盖技术框架、发展脉络、交叉融合点和应用场景的完整解析: 1. 核心技术体系 基础分析层级 词法分析:分词、词性标注、命名实体识别句法分析:依存句法…

【Linux我做主】GDB调试工具完全指南

Linux下GDB调试工具完全指南:25个核心命令详解与实战示例 github地址 有梦想的电信狗 前言 GDB(GNU Debugger)是Linux开发中不可或缺的调试工具,尤其在定位代码逻辑错误和内存问题时表现卓越。本文基于实际开发经验&#xff0…

Pycharm 如何删除某个 Python Interpreter

在PyCharm中,点击右下角的“Interpreter Settings”按钮,或者通过菜单栏选择“File” > “Settings”(macOS用户选择“PyCharm” > “Preferences”)。在设置窗口中,导航到“Project: [Your Project Name]” >…

Day3:个人中心页面布局前端项目uniapp壁纸实战

接下来我们来弄一下个人中心页面布局user.vue <template><view class"userLayout"><view class"userInfo"><view class"avatar"><image src"../../static/Kx.jpg" mode"aspectFill"></im…

正则表达式反向引用的综合应用魔法:从重复文本到简洁表达的蜕变

“我....我要....学学学学....编程 java!” —— 这类“重复唠叨”的文本是否让你在清洗数据时头疼不已&#xff1f; 本文将带你一步步掌握正则表达式中的反向引用技术&#xff0c;并结合 Java 实现一个中文文本去重与清洗的实用工具。 结合经典的结巴实例。如何高效地将这样的…

FFmpeg+Nginx+VLC打造M3U8直播

一、视频直播的技术原理和架构方案 直播模型一般包括三个模块&#xff1a;主播方、服务器端和播放端 主播放创造视频&#xff0c;加美颜、水印、特效、采集后推送给直播服务器 播放端&#xff1a; 直播服务器端&#xff1a;收集主播端的视频推流&#xff0c;将其放大后推送给…

Windows串口通信

Windows串口通信相比较Android串口通信,在开发上面相对方便一些。原理都是一样,需要仔细阅读厂商设备的串口通信协议。结合串口调试助手进行测试,测试通过后,编写代码实现。 比如近期就接触到了一款天平,其最大测量值为100g,测量精度0.001g。 拿到手之后我就先阅读串口通…

【开源项目】Excel手撕AI算法深入理解(三):时序(RNN、mamba、Long Short Term Memory (LSTM)、xLSTM)

项目源码地址&#xff1a;https://github.com/ImagineAILab/ai-by-hand-excel.git 一、RNN 1. RNN 的核心思想 RNN 的设计初衷是处理序列数据&#xff08;如时间序列、文本、语音&#xff09;&#xff0c;其核心特点是&#xff1a; 隐藏状态&#xff08;Hidden State&#xff…

构建专业金融图表系统的高效路径——QtitanChart在金融行业的应用价值

QtitanChart是一个C 库&#xff0c;它代表一组控件&#xff0c;这些控件使您可以快速轻松地为应用程序提供漂亮而丰富的图表。QtitanChart在Qt.C 上实现&#xff0c;并且支持所有主要的桌面操作系统 - Windows、Linux和Mac OSX。要将QtitanChart添加到您的程序中&#xff0c;只…