热门标签 | 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 实现的聊天室


推荐阅读
  • Java验证码——kaptcha的使用配置及样式
    本文介绍了如何使用kaptcha库来实现Java验证码的配置和样式设置,包括pom.xml的依赖配置和web.xml中servlet的配置。 ... [详细]
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • 基于layUI的图片上传前预览功能的2种实现方式
    本文介绍了基于layUI的图片上传前预览功能的两种实现方式:一种是使用blob+FileReader,另一种是使用layUI自带的参数。通过选择文件后点击文件名,在页面中间弹窗内预览图片。其中,layUI自带的参数实现了图片预览功能。该功能依赖于layUI的上传模块,并使用了blob和FileReader来读取本地文件并获取图像的base64编码。点击文件名时会执行See()函数。摘要长度为169字。 ... [详细]
  • 本文讨论了Alink回归预测的不完善问题,指出目前主要针对Python做案例,对其他语言支持不足。同时介绍了pom.xml文件的基本结构和使用方法,以及Maven的相关知识。最后,对Alink回归预测的未来发展提出了期待。 ... [详细]
  • 本文讨论了如何优化解决hdu 1003 java题目的动态规划方法,通过分析加法规则和最大和的性质,提出了一种优化的思路。具体方法是,当从1加到n为负时,即sum(1,n)sum(n,s),可以继续加法计算。同时,还考虑了两种特殊情况:都是负数的情况和有0的情况。最后,通过使用Scanner类来获取输入数据。 ... [详细]
  • 本文介绍了C#中数据集DataSet对象的使用及相关方法详解,包括DataSet对象的概述、与数据关系对象的互联、Rows集合和Columns集合的组成,以及DataSet对象常用的方法之一——Merge方法的使用。通过本文的阅读,读者可以了解到DataSet对象在C#中的重要性和使用方法。 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • Mac OS 升级到11.2.2 Eclipse打不开了,报错Failed to create the Java Virtual Machine
    本文介绍了在Mac OS升级到11.2.2版本后,使用Eclipse打开时出现报错Failed to create the Java Virtual Machine的问题,并提供了解决方法。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 本文介绍了在SpringBoot中集成thymeleaf前端模版的配置步骤,包括在application.properties配置文件中添加thymeleaf的配置信息,引入thymeleaf的jar包,以及创建PageController并添加index方法。 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • CentOS 7部署KVM虚拟化环境之一架构介绍
    本文介绍了CentOS 7部署KVM虚拟化环境的架构,详细解释了虚拟化技术的概念和原理,包括全虚拟化和半虚拟化。同时介绍了虚拟机的概念和虚拟化软件的作用。 ... [详细]
  • 本文介绍了一种解析GRE报文长度的方法,通过分析GRE报文头中的标志位来计算报文长度。具体实现步骤包括获取GRE报文头指针、提取标志位、计算报文长度等。该方法可以帮助用户准确地获取GRE报文的长度信息。 ... [详细]
  • PDF内容编辑的两种小方法,你知道怎么操作吗?
    本文介绍了两种PDF内容编辑的方法:迅捷PDF编辑器和Adobe Acrobat DC。使用迅捷PDF编辑器,用户可以通过选择需要更改的文字内容并设置字体形式、大小和颜色来编辑PDF文件。而使用Adobe Acrobat DC,则可以通过在软件中点击编辑来编辑PDF文件。PDF文件的编辑可以帮助办公人员进行文件内容的修改和定制。 ... [详细]
  • CentOS 6.5安装VMware Tools及共享文件夹显示问题解决方法
    本文介绍了在CentOS 6.5上安装VMware Tools及解决共享文件夹显示问题的方法。包括清空CD/DVD使用的ISO镜像文件、创建挂载目录、改变光驱设备的读写权限等步骤。最后给出了拷贝解压VMware Tools的操作。 ... [详细]
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社区 版权所有