前后端分離的項(xiàng)目,使用 Swoole React 實(shí)現(xiàn)的聊天室,整個項(xiàng)目的框架結(jié)構(gòu)可以進(jìn)行參考,前端 react react-redux react-router react-ant 等等,后臺使用 easySwoole,自行實(shí)現(xiàn)中間件(數(shù)據(jù)封裝,token 驗(yàn)證,簽名驗(yàn)證), 認(rèn)真看代碼可以學(xué)到很多哦,?! 1. 項(xiàng)目鏈接? 1.1 swoole(請 star)https://github.com/LaravelChen/swoole_chat... ? 1.2 react(請 star)https://github.com/LaravelChen/React-Small... ? 1.3 api 框架 (基本需求已全部實(shí)現(xiàn),可以自己試試?)https://github.com/LaravelChen/swoole_api_... ? 2. 簡介本人為了更加便利的開發(fā),自行實(shí)現(xiàn)了中間件,封裝了請求數(shù)據(jù)體,利用 jwt 實(shí)現(xiàn) api 的 token 驗(yàn)證,集成了 Laravel 的 ORM,再次封裝了一套適合 api 編寫流程的數(shù)據(jù)請求流程,具體可以看 App/Base 目錄下的 Model 類,具體開發(fā)步驟詳見代碼即可。 ? 3. 主要實(shí)現(xiàn)
? 4. 安裝? 4.1 后臺安裝這里只是后臺邏輯,前端的對應(yīng)項(xiàng)目請移步到:?https://github.com/LaravelChen/React-Small...
因?yàn)?swoole 常駐內(nèi)存,所以一旦修改代碼,需要重啟。 ? 4.2 前端安裝
? 5. 項(xiàng)目效果5.1 暢聊室 ![]() 5.2 私聊室 ? ![]() ? ![]() ? 此外,還有其他的加好友,消息推送等效果不演示了,可以自行下載安裝使用,效果很好! 6.postman 接口參考https://www./collections/7f9... ? 7. 數(shù)據(jù)表結(jié)構(gòu)1. 數(shù)據(jù)庫名
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 '創(chuàng)建時間', 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 '當(dāng)前的種類', 5 `user_id` int(11) NOT NULL COMMENT '發(fā)送方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 '創(chuàng)建時間', 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 '手機(jī)號', 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 '創(chuàng)建時間', 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; ? 來源:https://www./content-4-576801.html |
|