推送器未收到来自 Laravel 5.2 广播的事件
Pusher not receiving events from Laravel 5.2 broadcasting
我正在使用 Laravel 5.2 和 php 7。我正在本地 Mac OSX 环境中对此进行测试。我可以轻松地 ping 其他服务或使用 php 发出请求。我通过使用我的 api 详细信息编辑 broadcasting.php 和 .env 来配置我的应用程序。
broadcasting.php
'default' => env('BROADCAST_DRIVER', 'pusher'),
'connections' => [
'pusher' => [
'driver' => 'pusher',
'key' => env('mykey'),
'secret' => env('mysecret'),
'app_id' => env('myappid'),
],
...
并在 .env 中
...
CACHE_DRIVER=file
SESSION_DRIVER=file
QUEUE_DRIVER=redis
BROADCAST_DRIVER=pusher
PUSHER_KEY=mykey
PUSHER_SECRET=mysecret
PUSHER_APP_ID=myappid
...
我像这样创建了一个 TestEvent
<?php
namespace App\Events;
use App\Events\Event;
use Illuminate\Queue\SerializesModels;
use Illuminate\Contracts\Broadcasting\ShouldBroadcast;
class TestEvent extends Event implements ShouldBroadcast
{
use SerializesModels;
public $data;
public function __construct()
{
$this->data = array(
'power'=> '10'
);
}
public function broadcastOn()
{
return ['test_channel'];
}
}
然后我就这样调用事件
Event::fire(new TestEvent());
事件出现并在redis中处理
[2016-02-04 10:06:18] Processed: Illuminate\Broadcasting\BroadcastEvent
[2016-02-04 10:08:44] Processed: Illuminate\Broadcasting\BroadcastEvent
[2016-02-04 10:11:14] Processed: Illuminate\Broadcasting\BroadcastEvent
[2016-02-04 10:11:59] Processed: Illuminate\Broadcasting\BroadcastEvent
[2016-02-04 10:14:22] Processed: Illuminate\Broadcasting\BroadcastEvent
[2016-02-04 11:17:04] Processed: Illuminate\Broadcasting\BroadcastEvent
[2016-02-04 11:38:14] Processed: Illuminate\Broadcasting\BroadcastEvent
但是在查看调试控制台时,推送器中没有任何显示。因此,由于某种原因,该事件似乎永远不会发送给推送者。我还检查了我的时区设置以确保这不是问题。广播事件时 laravel 日志文件中我没有错误。
我该如何解决这个问题?有没有什么好的调试方法,看看是否真的有向pusher发出请求?
这可能无法解决问题,也许您更改了问题的详细信息,但如果您的 .env
是这样的:
PUSHER_KEY=mykey
PUSHER_SECRET=mysecret
PUSHER_APP_ID=myappid
您的推送凭据的代码不应该像这样:
'pusher' => [
'driver' => 'pusher',
'key' => env('PUSHER_KEY'),
'secret' => env('PUSHER_SECRET'),
'app_id' => env('PUSHER_APP_ID'),
],
它引用的是您代码中的值,而不是密钥!
我正在使用 Laravel 5.2 和 php 7。我正在本地 Mac OSX 环境中对此进行测试。我可以轻松地 ping 其他服务或使用 php 发出请求。我通过使用我的 api 详细信息编辑 broadcasting.php 和 .env 来配置我的应用程序。
broadcasting.php
'default' => env('BROADCAST_DRIVER', 'pusher'),
'connections' => [
'pusher' => [
'driver' => 'pusher',
'key' => env('mykey'),
'secret' => env('mysecret'),
'app_id' => env('myappid'),
],
...
并在 .env 中
...
CACHE_DRIVER=file
SESSION_DRIVER=file
QUEUE_DRIVER=redis
BROADCAST_DRIVER=pusher
PUSHER_KEY=mykey
PUSHER_SECRET=mysecret
PUSHER_APP_ID=myappid
...
我像这样创建了一个 TestEvent
<?php
namespace App\Events;
use App\Events\Event;
use Illuminate\Queue\SerializesModels;
use Illuminate\Contracts\Broadcasting\ShouldBroadcast;
class TestEvent extends Event implements ShouldBroadcast
{
use SerializesModels;
public $data;
public function __construct()
{
$this->data = array(
'power'=> '10'
);
}
public function broadcastOn()
{
return ['test_channel'];
}
}
然后我就这样调用事件
Event::fire(new TestEvent());
事件出现并在redis中处理
[2016-02-04 10:06:18] Processed: Illuminate\Broadcasting\BroadcastEvent
[2016-02-04 10:08:44] Processed: Illuminate\Broadcasting\BroadcastEvent
[2016-02-04 10:11:14] Processed: Illuminate\Broadcasting\BroadcastEvent
[2016-02-04 10:11:59] Processed: Illuminate\Broadcasting\BroadcastEvent
[2016-02-04 10:14:22] Processed: Illuminate\Broadcasting\BroadcastEvent
[2016-02-04 11:17:04] Processed: Illuminate\Broadcasting\BroadcastEvent
[2016-02-04 11:38:14] Processed: Illuminate\Broadcasting\BroadcastEvent
但是在查看调试控制台时,推送器中没有任何显示。因此,由于某种原因,该事件似乎永远不会发送给推送者。我还检查了我的时区设置以确保这不是问题。广播事件时 laravel 日志文件中我没有错误。
我该如何解决这个问题?有没有什么好的调试方法,看看是否真的有向pusher发出请求?
这可能无法解决问题,也许您更改了问题的详细信息,但如果您的 .env
是这样的:
PUSHER_KEY=mykey
PUSHER_SECRET=mysecret
PUSHER_APP_ID=myappid
您的推送凭据的代码不应该像这样:
'pusher' => [
'driver' => 'pusher',
'key' => env('PUSHER_KEY'),
'secret' => env('PUSHER_SECRET'),
'app_id' => env('PUSHER_APP_ID'),
],
它引用的是您代码中的值,而不是密钥!