{"id":15025940,"url":"https://github.com/hyperf-glory/socket-io","last_synced_at":"2025-09-07T10:34:36.684Z","repository":{"id":45178713,"uuid":"324332454","full_name":"Hyperf-Glory/socket-io","owner":"Hyperf-Glory","description":"基于Hyperf微服务协程框架开发的sokcet-io分布式系统","archived":false,"fork":false,"pushed_at":"2022-01-03T13:15:06.000Z","size":7358,"stargazers_count":87,"open_issues_count":0,"forks_count":20,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-07-05T08:04:27.278Z","etag":null,"topics":["consul","hyperf","mysql","nsq","php72","php73","php74","rabbitmq","redis","socket-io","swoole"],"latest_commit_sha":null,"homepage":"https://im.jayjay.cn","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Hyperf-Glory.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-12-25T09:35:15.000Z","updated_at":"2025-02-21T03:10:58.000Z","dependencies_parsed_at":"2022-09-06T02:31:44.898Z","dependency_job_id":null,"html_url":"https://github.com/Hyperf-Glory/socket-io","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/Hyperf-Glory/socket-io","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Hyperf-Glory%2Fsocket-io","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Hyperf-Glory%2Fsocket-io/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Hyperf-Glory%2Fsocket-io/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Hyperf-Glory%2Fsocket-io/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Hyperf-Glory","download_url":"https://codeload.github.com/Hyperf-Glory/socket-io/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Hyperf-Glory%2Fsocket-io/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":274026692,"owners_count":25209739,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-07T02:00:09.463Z","response_time":67,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["consul","hyperf","mysql","nsq","php72","php73","php74","rabbitmq","redis","socket-io","swoole"],"created_at":"2024-09-24T20:03:21.095Z","updated_at":"2025-09-07T10:34:36.658Z","avatar_url":"https://github.com/Hyperf-Glory.png","language":"PHP","readme":"## 服务器马上到期,demo预览不了。后续会补上.谢谢各位的star\n\n## 请暂时不要用于生产环境\n项目还在开发优化中\n## Socket-IO\n再次升级，此版本采用hyperf2.x+Vue+Element搭建的分布式Socket-io系统,利用rpc作为注册，鉴权服务,rpc发布到注册中心.利用dao-cloud+docker多容器部署目前已初步搭建完成，待完成系统业务会继续优化，写份教程供大家学习.\n此次系统的业务逻辑借鉴[lumen-im](https://github.com/gzydong/LumenIM) 的逻辑用hyperf重写，第一版本求稳定运行上线.第二版本会重新整理业务架构，代码更加优化。更加符合PHP规范化.\n# [Socket-IO服务聊天系统](https://github.com/Hyperf-Glory/socket-io)\n\u003cp align=\"center\"\u003e\n    \u003ca href=\"https://github.com/Hyperf-Glory/socket-io\" target=\"_blank\"\u003e\n        \u003cimg src=\"https://static.jayjay.cn/1496800949298.jpg\"/\u003e\n    \u003c/a\u003e\n\u003c/p\u003e\n\n[![Php Version](https://img.shields.io/badge/php-%3E=7.2-brightgreen.svg?maxAge=2592000)](https://secure.php.net/)\n[![Swoole Version](https://img.shields.io/badge/swoole-%3E=4.5-brightgreen.svg?maxAge=2592000)](https://github.com/swoole/swoole-src)\n[![sl-im License](https://img.shields.io/github/license/hyperf/hyperf.svg?maxAge=2592000)](https://github.com/Hyperf-Glory/socket-io/blob/master/LICENSE)\n\n\n## 简介\n \n[socket-io](https://im.jayjay.cn) 是基于 [Hyperf](https://hyperf.io) 微服务协程框架(Swoole)和 Vue + ElementUI 网页聊天系统 所开发出来的聊天室。\n\n## 体验地址\n\n[Socket-IO](https://im.jayjay.cn)\n\n## 功能\n1.0\n- 基于Swoole Socket-io服务做消息即时推送\n- 支持私聊及群聊\n- 支持聊天消息类型有文本、代码块、图片及其它类型文件，并支持文件下载\n- 支持聊天消息撤回、删除或批量删除、转发消息（逐条转发、合并转发）\n- 支持docker部署(后续写搭建教程)\n- Rpc服务注册登录鉴权\n- Nsq分布式消息中间件\n- Mysql提供数据存储功能\n- Redis存储聊天关系映射\n### 问题\nJson-Rpc 业务架构比较混乱和Service层架构冲突。下个版本着重优化，把HTTP和Rpc部分业务分到Service层.\n代码规范不符合现代化.有重复的代码使用.socket-io服务单独重构独立成为分布式服务\n也许它存在很多问题,但是也请大家多一份耐心，毕竟一个人的开发精力有限。项目我会一直维持下去。\n也希望证明php也是可以做分布式的。恢复php荣光,我辈义不容辞.\n\n2.0\n- 重新架构\n- 代码更符合PHP标准化\n\n## Requirement\n\n- [PHP 7.2+](https://github.com/php/php-src/releases)\n- [Swoole 4.5+](https://github.com/swoole/swoole-src/releases)\n- [Composer](https://getcomposer.org/)\n- [Hyperf \u003e= 2.x](https://github.com/hyperf/hyperf/releases)\n\n\n\n## 单机部署方式\n\n### Composer\n\n```bash\ncomposer install\n```\n\n### env配置\n```\nAPP_NAME=skeleton\nAPP_ENV=dev\n\nDB_DRIVER=mysql\nDB_HOST=localhost\nDB_PORT=3306\nDB_DATABASE=hyperf\nDB_USERNAME=root\nDB_PASSWORD=\nDB_CHARSET=utf8mb4\nDB_COLLATION=utf8mb4_unicode_ci\nDB_PREFIX=\n\nREDIS_HOST=localhost\nREDIS_AUTH=(null)\nREDIS_PORT=6379\nREDIS_DB=0\n\nCLOUD_REDIS=default\n\nWEBSOCKET_SERVER_IPS = {\"ws1\":\"127.0.0.1\",\"ws2\":\"127.0.0.2\"}\nAMQP_HOST=localhost //rabbitmq地址\nNSQ_HOST=localhost //nsq地址\nCONSUL_HOST=localhost:8500 //consul地址\nNSQD_HOST=127.0.0.1:4151 //nsqd地址\n\n//邮箱配置\nMAIL_HOST=\nMAIL_PORT=\nMAIL_USERNAME=\nMAIL_PASSWORD=\nMAIL_FROM=\nMAIL_NAME=\n//静态资源地址\nIMAGE_URL=http://127.0.0.1:9500\n//七牛配置\nQINIU_ACCESS_KEY=\nQINIU_SECRET_KEY=\nQINIU_BUCKET=\nQINBIU_DOMAIN=\n\n```\n\n### nginx配置\n\n```bash\n# 至少需要一个 Hyperf 节点，多个配置多行\nupstream hyperf_chat_http {\n    # Hyperf-Chat HTTP Server 的 IP 及 端口\n    server 127.0.0.1:9500;\n    server 127.0.0.1:1500;\n}\nupstream hyperf_chat_ws {\n    # 设置负载均衡模式为 IP Hash 算法模式，这样不同的客户端每次请求都会与同一节点进行交互\n    ip_hash;\n    # Hyperf Chat Server 的 IP 及 端口\n    server 127.0.0.1:9502;\n    server 127.0.0.1:1502;\n}\nserver {\n    listen 443 ssl;\n    index index.html index.htm;\n    server_name xxx.cn;\n  error_log /home/wwwlogs/xxxerr.log;\n    root /home/wwwroot/hyperf-chat/public;\n    ssl_certificate /etc/ssl/xxx.crt;\n    # 指定私钥文件路径\n    ssl_certificate_key /etc/ssl/xxx.key;\n    ssl_protocols        TLSv1.2 TLSv1.1 TLSv1;\n        ssl_ciphers   ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;\n        ssl_prefer_server_ciphers   on;\n        ssl_session_timeout 5m;\n      index index.php index.html index.htm;\n    location / {\n        # 将客户端的 Host 和 IP 信息一并转发到对应节点\n           proxy_set_header Host $http_host;\n           proxy_set_header X-Real-IP $remote_addr;\n           proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n\n               # 转发Cookie，设置 SameSite\n           proxy_cookie_path / \"/; secure; HttpOnly; SameSite=strict\";\n\n               # 执行代理访问真实服务器\n           proxy_pass http://hyperf_chat_http;\n    }\n    location /socket.io {\n        # WebSocket Header\n         proxy_http_version 1.1;\n         proxy_set_header Upgrade websocket;\n         proxy_set_header Connection \"Upgrade\";\n\n         # 将客户端的 Host 和 IP 信息一并转发到对应节点\n         proxy_set_header X-Real-IP $remote_addr;\n         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n         proxy_set_header Host $http_host;\n\n         # 客户端与服务端无交互 60s 后自动断开连接，请根据实际业务场景设置\n         proxy_read_timeout 60s ;\n\n               # 执行代理访问真实服务器\n         proxy_pass http://hyperf_chat_ws;\n    }\n}\nserver\n{\n  # 80端口是http正常访问的接口\n  listen 80;\n  server_name xxx.cn;\n  # 在这里，我做了https全加密处理，在访问http的时候自动跳转到https\n  rewrite ^(.*) https://$host$1 permanent;\n}\n\n```\n\n### Start\n\n- 挂起\n\n```bash\ncomposer dump-autoload -o\nphp bin/hyperf.php start\n```\n\n\n## 打赏(你的支持是我最大的动力)\n\n\n\u003cp align=\"center\"\u003e\n    \u003ca href=\"https://github.com/codingheping/hyperf-chat\" target=\"_blank\"\u003e\n        \u003cimg src=\"https://static.jayjay.cn/pay.jpeg\"/\u003e\n    \u003c/a\u003e\n\u003c/p\u003e\n\n\n## 联系方式\n\n- WeChat：naicha_1994\n- QQ：847050412\n- QQ群:658446650\n\n## socket-io欢迎star\n[socket-io](https://github.com/Hyperf-Glory/socket-io)\n\n## License\n\n[LICENSE](LICENSE)\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhyperf-glory%2Fsocket-io","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhyperf-glory%2Fsocket-io","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhyperf-glory%2Fsocket-io/lists"}