先后端分离的项目,使用 Swoole+React 实现的聊天室,整个项目的框架结构能够进行参考,前端 react+react-redux+react-router+react-ant 等等,后台使用 easySwoole,自行实现中间件(数据封装,token 验证,签名验证), 认真看代码能够学到不少哦,?!php
https://github.com/LaravelChen/swoole_chat...前端
https://github.com/LaravelChen/React-Small...react
https://github.com/LaravelChen/swoole_api_...
性能展现 (强,强,强)git
本人为了更加便利的开发,自行实现了中间件,封装了请求数据体,利用 jwt 实现 api 的 token 验证,集成了 Laravel 的 ORM,再次封装了一套适合 api 编写流程的数据请求流程,具体能够看 App/Base 目录下的 Model 类,具体开发步骤详见代码便可。github
这里只是后台逻辑,前端的对应项目请移步到: https://github.com/LaravelChen/React-Small...数据库
php server start
由于 swoole 常驻内存,因此一旦修改代码,须要重启。npm
npm install
npm run start
5.1 畅聊室redux
5.2 私聊室后端
此外,还有其余的加好友,消息推送等效果不演示了,能够自行下载安装使用,效果很好!api
https://www.getpostman.com/collections/7f9...
swoole_framework
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
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;
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;