åå端å离ç项ç®ï¼ä½¿ç¨ 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 表
CREATE TABLE `chat_content` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT 'id',
`user_id` int(11) NOT NULL COMMENT 'ç¨æ·id',
`to_user_id` int(11) DEFAULT NULL COMMENT 'æ¥æ¶æ¹',
`action` enum('PUBLIC','PRIVATE') NOT NULL DEFAULT 'PUBLIC' COMMENT 'æä½æ ·å¼',
`chat_content` varchar(255) NOT NULL DEFAULT '' COMMENT 'è天记å½',
`created_at` datetime DEFAULT NULL COMMENT 'å建æ¶é´',
`updated_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 'æ´æ°æ¶é´',
`deleted_at` timestamp NULL DEFAULT NULL COMMENT 'å é¤æ¶é´',
PRIMARY KEY (`id`),
KEY `user_id` (`user_id`,`to_user_id`)
) ENGINE=InnoDB AUTO_INCREMENT=116 DEFAULT CHARSET=utf8mb4;
friends 表
CREATE TABLE `friends` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`user_id` int(11) DEFAULT NULL COMMENT 'ç¨æ·id',
`to_user_id` int(11) DEFAULT NULL COMMENT '好åid',
`created_at` timestamp NULL DEFAULT NULL,
`updated_at` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
`deleted_at` timestamp NULL DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8;
Â
notification 表
CREATE TABLE `notification` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`type` enum('ADDUSER') NOT NULL DEFAULT 'ADDUSER' COMMENT 'ç±»å',
`action` enum('RECEIVE','REFUSE','DEFAULT') DEFAULT 'DEFAULT' COMMENT 'å½åçç§ç±»',
`user_id` int(11) NOT NULL COMMENT 'åéæ¹id',
`message` varchar(255) DEFAULT NULL COMMENT 'ä¿¡æ¯',
`to_user_id` int(11) NOT NULL COMMENT 'æ¥éæ¹id',
`is_read` enum('YES','NO') NOT NULL DEFAULT 'NO' COMMENT 'æ¯å¦å·²è¯»',
`created_at` datetime NOT NULL COMMENT 'å建æ¶é´',
`updated_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 'æ´æ°æ¶é´',
`deleted_at` timestamp NULL DEFAULT NULL COMMENT 'å é¤æ¶é´',
PRIMARY KEY (`id`),
KEY `type` (`type`,`user_id`,`to_user_id`)
) ENGINE=InnoDB AUTO_INCREMENT=21 DEFAULT CHARSET=utf8mb4;
users 表
CREATE TABLE `users` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT 'id',
`phone` varchar(13) NOT NULL DEFAULT '' COMMENT 'ææºå·',
`name` varchar(55) NOT NULL DEFAULT '' COMMENT 'å§å',
`email` varchar(30) NOT NULL DEFAULT '' COMMENT 'é®ç®±å°å',
`avatar` varchar(255) DEFAULT NULL COMMENT '头åå°å',
`password` varchar(100) NOT NULL DEFAULT '' COMMENT 'å¯ç ',
`created_at` datetime DEFAULT NULL COMMENT 'å建æ¶é´',
`updated_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 'æ´æ°æ¶é´',
`deleted_at` timestamp NULL DEFAULT NULL COMMENT ' å é¤æ¶é´',
PRIMARY KEY (`id`),
UNIQUE KEY `phone` (`phone`),
UNIQUE KEY `email` (`email`)
) ENGINE=InnoDB AUTO_INCREMENT=89 DEFAULT CHARSET=utf8;
Â
phperå¨è¿é¶çæ¶åæ»ä¼éå°ä¸äºé®é¢åç¶é¢ï¼ä¸å¡ä»£ç åå¤äºæ²¡ææ¹åæï¼ä¸ç¥é该ä»é£éå ¥æå»æåï¼å¯¹æ¤ææ´çäºä¸äºèµæï¼å æ¬ä½ä¸éäºï¼åå¸å¼æ¶æãé«å¯æ©å±ãé«æ§è½ãé«å¹¶åãæå¡å¨æ§è½è°ä¼ãTP6ï¼laravelï¼YII2ï¼Redisï¼SwooleãKafkaãMysqlä¼åãshellèæ¬ãDockerãå¾®æå¡ãNginxçå¤ä¸ªç¥è¯ç¹é«çº§è¿é¶å¹²è´§éè¦çå¯ä»¥å è´¹å享ç»å¤§å®¶ï¼éè¦çï¼ç¹å»âï¼æçå®æ¹ç¾¤677079770
æ´å¤swooleçç¥è¯å享å¦æå欢æçæç« ï¼æ³ä¸ä¸ç¾¤èµæ·±å¼åè ä¸èµ·äº¤æµå¦ä¹ çè¯ï¼è·åæ´æ¬¢è¿å å ¥æçå¦ä¹ 交æµç¾¤677079770ä¸èµ·å¦ä¹ æé¿