【问题标题】:BroadcastException Pusher 404 Laravel/LumenBroadcastException Pusher 404 Laravel/流明
【发布时间】:2021-08-19 02:10:06
【问题描述】:

问题

对于一个 Lumen 8 项目,我们正在尝试实现 Pusher。我们让它在 Docker 环境中本地工作,但是当我们转向 Kubernetes 时,它不再工作了。我们收到此错误:

[2021-05-27 17:56:36] production.ERROR: Pusher error: 404 NOT FOUND {"exception":"[object] (Illuminate\\Broadcasting\\BroadcastException(code: 0): Pusher error: 404 NOT FOUND at /var/www/html/vendor/illuminate/broadcasting/Broadcasters/PusherBroadcaster.php:122)

这意味着它会抛出这段代码:

114:         if ($this->pusherServerIsVersionFiveOrGreater()) {
115:             $parameters = $socket !== null ? ['socket_id' => $socket] : [];
116: 
117:             try {
118:                 $this->pusher->trigger(
119:                     $this->formatChannels($channels), $event, $payload, $parameters
120:                 );
121:             } catch (ApiErrorException $e) {
122:                 throw new BroadcastException(
123:                     sprintf('Pusher error: %s.', $e->getMessage())
124:                 );
125:             }
126:         }

它的工作方式是这样的。用户触发一个函数,该函数创建一个将在 Redis 中排队的 Job。然后当 Job 完成时,Event 就会被触发。

Jobs 工作,除了发送事件,这会导致上述错误。

我们的尝试

我们尝试将 Curl 选项添加到 Pusher 广播连接:

'pusher' => [
            'driver' => 'pusher',
            'key' => env('PUSHER_APP_KEY'),
            'secret' => env('PUSHER_APP_SECRET'),
            'app_id' => env('PUSHER_APP_ID'),
            'options' => [
                'cluster' => env('PUSHER_APP_CLUSTER'),
                'encrypted' => false,
                'curl_options' => [
                    CURLOPT_SSL_VERIFYHOST => 0,
                    CURLOPT_SSL_VERIFYPEER => 0,
                ]
            ],
        ],

我们尝试将“加密”选项更改为真/假。这些都不起作用。

我们尝试使用php artisan cache:clear 清除缓存以及手动清除它rm -r storage/framework/cache

我们尝试了composer dump-autoloadcomposer update

我们对环境变量进行了三次检查,但仍然无法正常工作。

如果您需要更多信息,请告诉我!

【问题讨论】:

    标签: php laravel lumen pusher


    【解决方案1】:

    好的,这是PEBKAC 的严重案例。显然我们使用了全局 .env 变量,但 PUSHER APP ID 的名称错误。既然我们改了它的名字,它应该已经修复了。

    因此,如果您收到 404 错误,请确保您的应用变量正确。还要确保代码实际上可以到达并阅读它们。 (您可以使用php artisan tinker 这样做)。

    【讨论】:

      猜你喜欢
      • 2020-08-18
      • 2018-07-07
      • 2018-06-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-23
      • 2018-03-03
      相关资源
      最近更新 更多