/laravel-broadcast-demo

基于laravel 8.x,使用Redis数据库和predis、socket.io、laravel-echo、laravel-echo-server工具库实现WebSocket连接的广播系统。

Primary LanguagePHPMIT LicenseMIT

laravel-broadcast-demo

基于laravel 8.x,使用Redis数据库和predis、socket.io、laravel-echo、laravel-echo-server工具库实现WebSocket连接的广播系统。

使用docker-compose一键启动项目,环境配置真的很烦人。

文档没时间写了,但是可以查看提交记录的解释来查看修改的原因。

-! 如果帮助到你了,请留个小星星🌟支持,也能让更多人得到帮助。!-

参考来源

laravel广播系统文档

Laravel Broadcasting广播机制(Redis + socket.io)-学习实例

运行 Laradock 开发环境

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'

开始

打包js文件到public

npm run production

运行 laravel-echo-server 服务

npx laravel-echo-server start --config="./laravel-echo-server.json"

运行队列

php artisan queue:work

测试功能

  1. 打开主页http://localhost/,并打开检查器。
  2. 发送广播。打开页面:http://localhost/example-broadcast,或运行命令行php artisan example-broadcast-event
  3. 在主页查看广播接收。

遇到问题与解决

web端的laravel-echo接收不到广播信息。

症状: redis数据正常,队列处理正常,laravel-echo-server接收广播正常,laravel-echo成功连接laravel-echo-server,但并未加入频道。

解决方案: 降级socket.io-client包的版本为2.4.0

解决方案来源: https://stackoverflow.com/a/65859555/8341648

原因: 未知。可能是版本不兼容。

Laravel IDE Helper Generator

对 Laravel 框架增加语言包

  • config/app.php 修改时区:'timezone' => 'PRC'
  • config/app.php 修改语言:'locale' => 'zh-CN' ,并在 resources/lang/zh-CN 增加语言包

License

The Laravel broadcast-demo is open-sourced software licensed under the MIT license.