基于laravel 8.x,使用Redis数据库和predis、socket.io、laravel-echo、laravel-echo-server工具库实现WebSocket连接的广播系统。
使用docker-compose一键启动项目,环境配置真的很烦人。
文档没时间写了,但是可以查看提交记录的解释来查看修改的原因。
Laravel Broadcasting广播机制(Redis + socket.io)-学习实例
cd laradock-laravel-broadcast-demo && cp env-example .env
docker-compose up -d
docker-compose exec workspace /bin/bash -c 'composer install && cp .env.example .env && php artisan key:generate'
docker-compose exec workspace /bin/bash -c 'npm install'
npm run production
npx laravel-echo-server start --config="./laravel-echo-server.json"
php artisan queue:work
- 打开主页
http://localhost/
,并打开检查器。 - 发送广播。打开页面:
http://localhost/example-broadcast
,或运行命令行php artisan example-broadcast-event
。 - 在主页查看广播接收。
症状: redis数据正常,队列处理正常,laravel-echo-server接收广播正常,laravel-echo成功连接laravel-echo-server,但并未加入频道。
解决方案: 降级socket.io-client
包的版本为2.4.0
。
解决方案来源: https://stackoverflow.com/a/65859555/8341648
原因: 未知。可能是版本不兼容。
php artisan ide-helper:generate
-用于Laravel Facades的PHPDoc生成php artisan ide-helper:models
-适用于模型的PHPDocsphp artisan ide-helper:meta
-PhpStorm元文件
- 在
config/app.php
修改时区:'timezone' => 'PRC'
- 在
config/app.php
修改语言:'locale' => 'zh-CN'
,并在resources/lang/zh-CN
增加语言包
The Laravel broadcast-demo is open-sourced software licensed under the MIT license.