BroadcastException 推送器 404 Laravel/Lumen

BroadcastException Pusher 404 Laravel/Lumen

问题

对于 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 中排队的作业。然后当作业完成时,事件被触发。

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,
                ]
            ],
        ],

我们尝试将 'encrypted' 选项更改为 true/false。 None 其中有效。

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

我们尝试了composer dump-autoloadcomposer update

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

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

好的,这是一个严重的 PEBKAC 案例。显然,我们使用的是全局 .env 变量,但 PUSHER APP ID 的名称错误。现在我们更改了它的名称应该是固定的。

因此,如果您遇到 404 错误,请确保您的应用变量是正确的。还要确保代码可以真正到达并读取它们。 (您可以使用 php artisan tinker)。