【问题标题】:Pusher not receiving events from Laravel 5.2 broadcastingPusher 未接收来自 Laravel 5.2 广播的事件
【发布时间】:2016-02-04 10:56:18
【问题描述】:

我正在使用 Laravel 5.2 和 php 7。我正在本地 Mac OSX 环境中进行测试。我在 ping 其他服务或使用 php 发出请求时没有问题。我通过使用我的 api 详细信息编辑 broadcasting.php 和 .env 来配置我的应用程序。

广播.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 日志文件中 my 没有错误。

我该如何解决这个问题?有没有好的调试方法,看看是否真的有向推送者发出请求?

【问题讨论】:

    标签: php laravel-5 pusher


    【解决方案1】:

    这可能无法解决问题,也许您更改了问题的详细信息,但如果您的 .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'),
        ],
    

    它引用的是代码中的值,而不是键!

    【讨论】:

    • 现在很明显,我看到了。这解决了问题。很可能会将其标记为解决方案,但会等待几个小时以允许其他人回答或提供意见。谢谢!
    • 不客气。很高兴它现在对你有用。很高兴看到一些关于调试此类问题的解决方案,因为我没有正确地尝试过这些功能。我希望您可能已经检查过了,但是您的日志文件是否会抛出有关无效凭据的任何内容?您可以在/storage/logs/laravel.log 或带有今天日期的日志中找到它。如果您发现问题出现在您的日志文件中,您可能需要更新我的答案或添加您自己的答案。谢谢。
    • 不,我的日志文件中没有任何内容,这会使这个问题更容易解决。在我的问题结束时,我已经说过了。
    • 我错了,我想你可能有。希望有人可以发布一些有关如何调试此类问题的详细信息。
    • @haakym,看来你可以帮助我。看看这个:stackoverflow.com/questions/45877837/…
    猜你喜欢
    • 1970-01-01
    • 2018-03-08
    • 1970-01-01
    • 2016-10-03
    • 1970-01-01
    • 2021-05-06
    • 2023-03-04
    • 2019-09-14
    • 2023-03-21
    相关资源
    最近更新 更多