php event command,Laravel5.4,广播事件,pusher 的配置以及使用

最近要写一个聊天室,于是了解了一下laravel的事件广播,参考资料来源于http://laravelacademy.org/pos... 但是在跟随博主动手的时候, 发现事件成功触发, 但是pusher调试控制台上并没有收到事件。经过调试找到问题所在。

首先我们先创建一个事件:

php artisan make:event TestEvent

最终, 事件的代码如下, 这里有一个注意点就是

如果该事件没有继承use IlluminateContractsBroadcastingShouldBroadcast; 接口,那么触发事件,将不会发送事件至pusher 服务器上.

use ...

// 如果该事件没有继承use Illuminate\Contracts\Broadcasting\ShouldBroadcast; 接口,那么触发事件,将不会发送事件至pusher 服务器上.

class TestEvent implements ShouldBroadcast

{

use Dispatchable, InteractsWithSockets, SerializesModels;

// 类型需为public

public $msg;

public function __construct($msg)

{

$this->msg = $msg;

}

public function broadcastOn()

{

return [

'test'

];

}

}

为了测试方便,我们创建一个artisan 命令来触发事件.

php artisan make:command TestEventCommand

打开命令类 app/Console/Commands/TestEventCommand.php 编辑后如下

class TestEventCommand extends Command

{

protected $signature = 'pusher:test {message}';

protected $description = 'pusher test';

public function __construct()

{

parent::__construct();

}

public function handle()

{

event(new \App\Events\TestEvent($this->argument('message')));

}

}

打开 app/Console/Kernel.php, 将刚创建的命令类添加至 $commands

protected $commands = [

Commands\TestEventCommand::class,

];

事件代码基本完成, 接下来导入pusher

composer require pusher/pusher-php-server

当pusher 成功导入之后 需要在env中配置, BROADCAST_DRIVER 需配置为pusher。 config/broadcasting.php 文件 BROADCAST_DRIVER 默认为null

- PUSHER_APP_ID=you_app_id

- PUSHER_APP_KEY=you_app_key

- PUSHER_APP_SECRET=you_app_secret

- BROADCAST_DRIVER = pusher

另外在这里测试发现如果 QUEUE_DRIVER 配置是redis 那么当触发事件的时候不会调用IlluminateBroadcastingBroadcastManager 下的createPusherDriver方法.也就是不生成pusher类发送事件. QUEUE_DRIVER应配置为sync

配置完成之后 我们就可以通过artisan 命令向pusher服务器发送事件,

php artisan pusher:test "hello"

那么,将会在pusher debug-console 上看到

1460000020617219

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值