热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

用Swoole+React实现的聊天室

前后端分离的项目,使用Swoole+React实现的聊天室,整个项目的框架结构可以进行参考,前端react+react-redux+react-router+react-ant等等

前后端分离的项目,使用 Swoole+React 实现的聊天室,整个项目的框架结构可以进行参考,前端 react+react-redux+react-router+react-ant 等等,后台使用 easySwoole,自行实现中间件(数据封装,token 验证,签名验证), 认真看代码可以学到很多哦,?!

1. 项目链接

 

1.1 swoole(请 star)

https://github.com/LaravelChen/swoole_chat...

 

1.2 react(请 star)

https://github.com/LaravelChen/React-Small...

 

1.3 api 框架 (基本需求已全部实现,可以自己试试?)

https://github.com/LaravelChen/swoole_api_...
性能展示 (强,强,强)

 

技术图片

2. 简介

本人为了更加便利的开发,自行实现了中间件,封装了请求数据体,利用 jwt 实现 api 的 token 验证,集成了 Laravel 的 ORM,再次封装了一套适合 api 编写流程的数据请求流程,具体可以看 App/Base 目录下的 Model 类,具体开发步骤详见代码即可。

 

3. 主要实现

  • 登录注册,验证码发送(如果需要测试,可以结合前端 react 将验证码打印出来即可)
  • 公共聊天室(一旦用户登录,用户列表即会增加,该用户可以进行加好友操作)
  • 消息推送(可以利用 swoole 的异步进程实现)
  • 私聊室 (加完好友即可进行私聊)
  • 其余功能可以添加......

 

4. 安装

 

4.1 后台安装

这里只是后台逻辑,前端的对应项目请移步到: https://github.com/LaravelChen/React-Small...

php server start

因为 swoole 常驻内存,所以一旦修改代码,需要重启。

 

4.2 前端安装

npm install
npm run start

 

5. 项目效果

5.1 畅聊室

技术图片

5.2 私聊室

 

技术图片

 

技术图片

 

此外,还有其他的加好友,消息推送等效果不演示了,可以自行下载安装使用,效果很好!

6.postman 接口参考

https://www.getpostman.com/collections/7f9...

 

7. 数据表结构

1. 数据库名

swoole_framework

chat_content 表

 1 CREATE TABLE `chat_content` (
 2   `id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT ‘id‘,
 3   `user_id` int(11) NOT NULL COMMENT ‘用户id‘,
 4   `to_user_id` int(11) DEFAULT NULL COMMENT ‘接收方‘,
 5   `action` enum(‘PUBLIC‘,‘PRIVATE‘) NOT NULL DEFAULT ‘PUBLIC‘ COMMENT ‘操作样式‘,
 6   `chat_content` varchar(255) NOT NULL DEFAULT ‘‘ COMMENT ‘聊天记录‘,
 7   `created_at` datetime DEFAULT NULL COMMENT ‘创建时间‘,
 8   `updated_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT ‘更新时间‘,
 9   `deleted_at` timestamp NULL DEFAULT NULL COMMENT ‘删除时间‘,
10   PRIMARY KEY (`id`),
11   KEY `user_id` (`user_id`,`to_user_id`)
12 ) ENGINE=InnoDB AUTO_INCREMENT=116 DEFAULT CHARSET=utf8mb4;

friends 表

 1 CREATE TABLE `friends` (
 2   `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
 3   `user_id` int(11) DEFAULT NULL COMMENT ‘用户id‘,
 4   `to_user_id` int(11) DEFAULT NULL COMMENT ‘好友id‘,
 5   `created_at` timestamp NULL DEFAULT NULL,
 6   `updated_at` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
 7   `deleted_at` timestamp NULL DEFAULT NULL,
 8   PRIMARY KEY (`id`)
 9 ) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8;
10  

notification 表

 1 CREATE TABLE `notification` (
 2   `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
 3   `type` enum(‘ADDUSER‘) NOT NULL DEFAULT ‘ADDUSER‘ COMMENT ‘类型‘,
 4   `action` enum(‘RECEIVE‘,‘REFUSE‘,‘DEFAULT‘) DEFAULT ‘DEFAULT‘ COMMENT ‘当前的种类‘,
 5   `user_id` int(11) NOT NULL COMMENT ‘发送方id‘,
 6   `message` varchar(255) DEFAULT NULL COMMENT ‘信息‘,
 7   `to_user_id` int(11) NOT NULL COMMENT ‘接送方id‘,
 8   `is_read` enum(‘YES‘,‘NO‘) NOT NULL DEFAULT ‘NO‘ COMMENT ‘是否已读‘,
 9   `created_at` datetime NOT NULL COMMENT ‘创建时间‘,
10   `updated_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT ‘更新时间‘,
11   `deleted_at` timestamp NULL DEFAULT NULL COMMENT ‘删除时间‘,
12   PRIMARY KEY (`id`),
13   KEY `type` (`type`,`user_id`,`to_user_id`)
14 ) ENGINE=InnoDB AUTO_INCREMENT=21 DEFAULT CHARSET=utf8mb4;

users 表

 1 CREATE TABLE `users` (
 2   `id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT ‘id‘,
 3   `phone` varchar(13) NOT NULL DEFAULT ‘‘ COMMENT ‘手机号‘,
 4   `name` varchar(55) NOT NULL DEFAULT ‘‘ COMMENT ‘姓名‘,
 5   `email` varchar(30) NOT NULL DEFAULT ‘‘ COMMENT ‘邮箱地址‘,
 6   `avatar` varchar(255) DEFAULT NULL COMMENT ‘头像地址‘,
 7   `password` varchar(100) NOT NULL DEFAULT ‘‘ COMMENT ‘密码‘,
 8   `created_at` datetime DEFAULT NULL COMMENT ‘创建时间‘,
 9   `updated_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT ‘更新时间‘,
10   `deleted_at` timestamp NULL DEFAULT NULL COMMENT ‘ 删除时间‘,
11   PRIMARY KEY (`id`),
12   UNIQUE KEY `phone` (`phone`),
13   UNIQUE KEY `email` (`email`)
14 ) ENGINE=InnoDB AUTO_INCREMENT=89 DEFAULT CHARSET=utf8;

用Swoole+React 实现的聊天室


推荐阅读
  • YB02 防水车载GPS追踪器
    YB02防水车载GPS追踪器由Yuebiz科技有限公司设计生产,适用于车辆防盗、车队管理和实时追踪等多种场合。 ... [详细]
  • 深入解析IGMP各版本特性及其演进
    本文详细探讨了Internet组管理协议(IGMP)的不同版本,包括IGMPv1的基础功能、IGMPv2的增强特性和IGMPv3的重要改进。特别分析了IGMPv3如何支持特定源组播(SSM)模型,并介绍了各版本之间的主要差异。 ... [详细]
  • Java与JSON互转:实现JSON到Java对象及Java对象到JSON的转换
    本文详细介绍了如何在Java中实现JSON数据与Java对象之间的相互转换,包括代码示例和常见问题解决方法。 ... [详细]
  • 题目 CF1245F: 清理春天的数学挑战 描述了一个数学问题:给定一个区间 [L, R](0 ≤ L, R ≤ 10^9),求该区间内满足 x + y = x ∧ y 的数对 (x, y) 的总数。 ... [详细]
  • python开发mysql:单表查询&多表查询
    一单表查询,以下是表内容二多表查询,一下是表内容三总结&表创建过程单 ... [详细]
  • MacOS 重装指南
    本文详细介绍了如何通过U盘启动并重新安装MacOS,包括遇到安装问题时的解决方案。 ... [详细]
  • 如何恢复CAD中意外丢失的图纸数据
    当使用CAD进行绘图时,因突然断电或其他原因导致计算机关闭可能会造成工作数据的丢失。然而,通过利用CAD软件的自动保存功能,用户通常能够恢复至最近一次自动保存的数据状态。 ... [详细]
  • 本文深入探讨 PHPCMS 平台中的字符串截取函数 str_cut 的使用方法,该函数常用于控制输出的标题或内容摘要长度,有效避免因过长的文本导致的页面布局问题。通过本文,读者将掌握如何灵活运用此函数,包括处理 HTML 标签等高级技巧。 ... [详细]
  • 在使用Maven进行项目构建时,由于依赖库的下载速度慢常常让人感到沮丧,这直接影响了开发效率和学习热情。幸运的是,阿里云提供了一个快速的国内镜像服务,能够显著提升Maven项目的构建速度。 ... [详细]
  • 本文探讨了为何需要进行详尽的需求分析,以及在软件开发过程中常见的需求类型。同时,介绍了几种有效的方法来确保能够准确地捕捉到用户的实际需求。 ... [详细]
  • JavaWeb技术架构解析
    本文探讨了JavaWeb开发中客户端与服务器端的交互模式,重点分析了B/S(浏览器/服务器)和C/S(客户端/服务器)两种架构的特点及应用场景。 ... [详细]
  • 深入理解Python编程
    本文探讨了作者在学习Python过程中遇到的挑战和转折点,以及如何通过找到合适的资源和方法来提升编程技能。对于初学者来说,这不仅是一个学习的过程,也是一个自我发现和调整学习策略的过程。 ... [详细]
  • 本文介绍了如何使用JavaScript和jQuery实现页面元素随着滚动条的移动而相应变化位置的功能,提供了一段简洁的代码示例。 ... [详细]
  • iTOP4412开发板QtE5.7源码编译指南
    本文详细介绍了如何在iTOP4412开发板上编译QtE5.7源码,包括所需文件的位置、编译器设置、触摸库编译以及QtE5.7的完整编译流程。 ... [详细]
  • 新手指南:在Windows 10上搭建深度学习与PyTorch开发环境
    本文详细记录了一名新手在Windows 10操作系统上搭建深度学习环境的过程,包括安装必要的软件和配置环境变量等步骤,旨在帮助同样初入该领域的读者避免常见的错误。 ... [详细]
author-avatar
浪奔西安
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有