gpt4 book ai didi

php - Laravel 事件未在生产服务器上广播

转载 作者:行者123 更新时间:2023-12-05 06:26:45 26 4
gpt4 key购买 nike

我正在使用 laravel-websockets 包来实现一些实时功能。我正在使用 redis 作为队列连接。我有一个事件 TestUpdated,我正在 test.{id} 私有(private) channel 上广播。 当我在本地机器上时,事件被触发并被客户端正确捕获。但是在生产服务器上,我抛出了 BroadcastException:

Illuminate\Broadcasting\BroadcastException in /home/forge/mydomain.com/vendor/laravel/framework/src/Illuminate/Broadcasting/Broadcasters/PusherBroadcaster.php:117

Horizo​​n 仪表板还公开了事件数据:

{
event: {
test: {
class: "App\Test",
id: 1,
relations: [
],
connection: "mysql"
},
socket: null
},
connection: null,
queue: null,
chainConnection: null,
chainQueue: null,
delay: null,
chained: [
]
}

我的 websockets.php 配置文件片段:

'apps' => [
[
'id' => env('PUSHER_APP_ID'),
'name' => env('APP_NAME'),
'key' => env('PUSHER_APP_KEY'),
'secret' => env('PUSHER_APP_SECRET'),
'enable_client_messages' => true,
'enable_statistics' => false,
],
],

我的观察:

  • Pusher 已连接。 authEndpoint 正确命中。我
  • 存在 channel 有效。
  • 本地机器和生产环境之间的显着区别是,在生产环境中,方案是 https

我正在使用任意推送器应用程序 ID、 key 和 secret (someId、someKey 和 someSecret')。我的客户端配置:

window.Echo = new Echo({
authEndpoint: 'my/endpoint',
broadcaster: 'pusher',
key: 'someKey',
wsHost: process.env.NODE_ENV == 'development' ? window.location.hostname : 'mydomain.com',
wsPort: 6001,
wssPort: 6001,
disableStats: true,
encrypted: process.env.NODE_ENV == 'development' ? false : true
});

来自 broadcasting.php 的配置:

'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' => true,
'host' => '127.0.0.1',
'port' => 6001,
'scheme' => env('PUSHER_SCHEME')
],
],

我该如何解决这个问题?

最佳答案

遇到同样问题的人:

我将主机更改为生产 URL:

这是更新后的配置:

'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' => true,
'host' => env('PUSHER_HOST'),
'port' => 6001,
'scheme' => env('PUSHER_SCHEME')
],
],

.env 文件中:

PUSHER_HOST=example.com

请记住从主机中排除 http/https。这不是 https://example.com,而是 example.com

关于php - Laravel 事件未在生产服务器上广播,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55742227/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com