socket-io
socket-io copied to clipboard
基于Hyperf微服务协程框架开发的sokcet-io分布式系统
æå¡å¨é©¬ä¸å°æ,demoé¢è§ä¸äºãåç»ä¼è¡¥ä¸.谢谢åä½çstar
è¯·ææ¶ä¸è¦ç¨äºç产ç¯å¢
项ç®è¿å¨å¼åä¼åä¸
Socket-IO
忬¡åçº§ï¼æ¤çæ¬éç¨hyperf2.x+Vue+Elementæå»ºçåå¸å¼Socket-ioç³»ç»,å©ç¨rpcä½ä¸ºæ³¨åï¼é´ææå¡,rpcåå¸å°æ³¨åä¸å¿.å©ç¨dao-cloud+dockerå¤å®¹å¨é¨ç½²ç®å已忥æå»ºå®æï¼å¾ å®æç³»ç»ä¸å¡ä¼ç»§ç»ä¼åï¼å份æç¨ä¾å¤§å®¶å¦ä¹ . æ¤æ¬¡ç³»ç»çä¸å¡é»è¾åé´lumen-im çé»è¾ç¨hyperféåï¼ç¬¬ä¸çæ¬æ±ç¨³å®è¿è¡ä¸çº¿.第äºçæ¬ä¼éæ°æ´çä¸å¡æ¶æï¼ä»£ç æ´å ä¼åãæ´å 符åPHPè§èå.
Socket-IOæå¡è天系ç»
ç®ä»
socket-io æ¯åºäº Hyperf å¾®æå¡åç¨æ¡æ¶(Swoole)å Vue + ElementUI ç½é¡µèå¤©ç³»ç» æå¼ååºæ¥çè天室ã
ä½éªå°å
åè½
1.0
- åºäºSwoole Socket-ioæå¡åæ¶æ¯å³æ¶æ¨é
- æ¯æç§èå群è
- æ¯æèå¤©æ¶æ¯ç±»åæææ¬ã代ç åãå¾çåå ¶å®ç±»åæä»¶ï¼å¹¶æ¯ææä»¶ä¸è½½
- æ¯æèå¤©æ¶æ¯æ¤åãå 餿æ¹éå é¤ãè½¬åæ¶æ¯ï¼éæ¡è½¬åãå并转åï¼
- æ¯ædockeré¨ç½²(åç»åæå»ºæç¨)
- Rpcæå¡æ³¨åç»å½é´æ
- Nsqåå¸å¼æ¶æ¯ä¸é´ä»¶
- Mysqlæä¾æ°æ®åå¨åè½
- Redisåå¨èå¤©å ³ç³»æ å°
é®é¢
Json-Rpc ä¸å¡æ¶ææ¯è¾æ··ä¹±åService屿¶æå²çªãä¸ä¸ªçæ¬çéä¼åï¼æHTTPåRpcé¨åä¸å¡åå°Serviceå±. 代ç è§èä¸ç¬¦åç°ä»£å.æéå¤ç代ç 使ç¨.socket-ioæå¡åç¬éæç¬ç«æä¸ºåå¸å¼æå¡ ä¹è®¸å®åå¨å¾å¤é®é¢,使¯ä¹è¯·å¤§å®¶å¤ä¸ä»½èå¿ï¼æ¯ç«ä¸ä¸ªäººçå¼åç²¾åæéãé¡¹ç®æä¼ä¸ç´ç»´æä¸å»ã ä¹å¸æè¯æphp乿¯å¯ä»¥ååå¸å¼çãæ¢å¤phpè£å ,æè¾ä¹ä¸å®¹è¾.
2.0
- éæ°æ¶æ
- ä»£ç æ´ç¬¦åPHPæ åå
Requirement
åæºé¨ç½²æ¹å¼
Composer
composer install
envé ç½®
APP_NAME=skeleton
APP_ENV=dev
DB_DRIVER=mysql
DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=hyperf
DB_USERNAME=root
DB_PASSWORD=
DB_CHARSET=utf8mb4
DB_COLLATION=utf8mb4_unicode_ci
DB_PREFIX=
REDIS_HOST=localhost
REDIS_AUTH=(null)
REDIS_PORT=6379
REDIS_DB=0
CLOUD_REDIS=default
WEBSOCKET_SERVER_IPS = {"ws1":"127.0.0.1","ws2":"127.0.0.2"}
AMQP_HOST=localhost //rabbitmqå°å
NSQ_HOST=localhost //nsqå°å
CONSUL_HOST=localhost:8500 //consulå°å
NSQD_HOST=127.0.0.1:4151 //nsqdå°å
//é®ç®±é
ç½®
MAIL_HOST=
MAIL_PORT=
MAIL_USERNAME=
MAIL_PASSWORD=
MAIL_FROM=
MAIL_NAME=
//éæèµæºå°å
IMAGE_URL=http://127.0.0.1:9500
//ä¸çé
ç½®
QINIU_ACCESS_KEY=
QINIU_SECRET_KEY=
QINIU_BUCKET=
QINBIU_DOMAIN=
nginxé ç½®
# è³å°éè¦ä¸ä¸ª Hyperf èç¹ï¼å¤ä¸ªé
ç½®å¤è¡
upstream hyperf_chat_http {
# Hyperf-Chat HTTP Server ç IP å 端å£
server 127.0.0.1:9500;
server 127.0.0.1:1500;
}
upstream hyperf_chat_ws {
# 设置è´è½½å衡模å¼ä¸º IP Hash ç®æ³æ¨¡å¼ï¼è¿æ ·ä¸åç客æ·ç«¯æ¯æ¬¡è¯·æ±é½ä¼ä¸åä¸èç¹è¿è¡äº¤äº
ip_hash;
# Hyperf Chat Server ç IP å 端å£
server 127.0.0.1:9502;
server 127.0.0.1:1502;
}
server {
listen 443 ssl;
index index.html index.htm;
server_name xxx.cn;
error_log /home/wwwlogs/xxxerr.log;
root /home/wwwroot/hyperf-chat/public;
ssl_certificate /etc/ssl/xxx.crt;
# æå®ç§é¥æä»¶è·¯å¾
ssl_certificate_key /etc/ssl/xxx.key;
ssl_protocols TLSv1.2 TLSv1.1 TLSv1;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_prefer_server_ciphers on;
ssl_session_timeout 5m;
index index.php index.html index.htm;
location / {
# å°å®¢æ·ç«¯ç Host å IP ä¿¡æ¯ä¸å¹¶è½¬åå°å¯¹åºèç¹
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# 转åCookieï¼è®¾ç½® SameSite
proxy_cookie_path / "/; secure; HttpOnly; SameSite=strict";
# æ§è¡ä»£ç访é®ç宿å¡å¨
proxy_pass http://hyperf_chat_http;
}
location /socket.io {
# WebSocket Header
proxy_http_version 1.1;
proxy_set_header Upgrade websocket;
proxy_set_header Connection "Upgrade";
# å°å®¢æ·ç«¯ç Host å IP ä¿¡æ¯ä¸å¹¶è½¬åå°å¯¹åºèç¹
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
# 客æ·ç«¯ä¸æå¡ç«¯æ äº¤äº 60s åèªå¨æå¼è¿æ¥ï¼è¯·æ ¹æ®å®é
ä¸å¡åºæ¯è®¾ç½®
proxy_read_timeout 60s ;
# æ§è¡ä»£ç访é®ç宿å¡å¨
proxy_pass http://hyperf_chat_ws;
}
}
server
{
# 80ç«¯å£æ¯httpæ£å¸¸è®¿é®çæ¥å£
listen 80;
server_name xxx.cn;
# å¨è¿éï¼æåäºhttpså
¨å å¯å¤çï¼å¨è®¿é®httpçæ¶åèªå¨è·³è½¬å°https
rewrite ^(.*) https://$host$1 permanent;
}
Start
- æèµ·
composer dump-autoload -o
php bin/hyperf.php start
æèµ(ä½ çæ¯ææ¯ææå¤§çå¨å)
èç³»æ¹å¼
- WeChatï¼naicha_1994
- QQï¼847050412
- QQ群:658446650
socket-io欢è¿star
License
LICENSE