Laravel broadcasting
配置 broadcasting
如果想在你的laravel项目中使用到广播系统,就需先修改一些配置文件和进行一些操作。
// laravel 官方提供的pusher辅助开发包
composer require pusher/pusher-php-server "~3.0"
// laravel 官方提供的前端开发辅助包
npm install --save laravel-echo pusher-js
- 修改 config/app.php中的
App\Providers\BroadcastServiceProvider::class
将这行代码的注释打开
- 修改.env文件
BROADCAST_DRIVER=pusher
Boradcasting-hello world
- 创建Event
php artisan make:event SayHelloEvent
- 将 Events/SayHelloEvent 实现 ShouldBroadcast
class SayHelloEvent implements ShouldBroadcast
- 注册pusher(我用的是github账户登录),创建自己的app,这步不难,pusher有新手引导,然后点进App keys ,复制信息到laravel项目的.env文件中
- 将resources/js/bootstrap.js文件中的
// import Echo from 'laravel-echo'
// window.Pusher = require('pusher-js');
// window.Echo = new Echo({
// broadcaster: 'pusher',
// key: process.env.MIX_PUSHER_APP_KEY,
// cluster: process.env.MIX_PUSHER_APP_CLUSTER,
// encrypted: true
// });
将这段代码的注释去掉,然后将其中的key和cluster改为自己.env文件中的pusher-key和pusher-cluster的值
开启监听
Echo.channel('SayHello') // 这里是频道名称
.listen('SayHelloEvent', (e) => { // 这里是事件名称
// 这里处理监听的逻辑
// 这里只是打印到console
console.log(e.order.name);
});
然后在welcome.blade.php文件中引入app.js ,因为app.js 会引入编译 bootstrap.js
开始测试
去routes/web.php中添加
Route::get('/event', function () {
event(new \App\Events\SayHelloEvent("hello world"));
dd('Done');
});
然后开两个浏览器,一个访问welcome.blade.php,另外一个访问/event,就可以看到 welcome.blade.php控制台中,不停的有信息冒出来(无刷新),还可以去pusher.com/debug console 中查看信息