Событие Laravel не транслируется на производственном сервере - PullRequest
1 голос
/ 18 апреля 2019

Я использую пакет laravel-websockets для некоторых функций реального времени.Я использую Redis в качестве подключения к очереди.У меня есть событие TestUpdated, которое я транслирую на частном канале test.{id}. Событие правильно запускается и перехватывается клиентом, когда я нахожусь на локальной машине.Но на рабочем сервере я получаю BroadcastException брошено:

Подсветка \ Broadcasting \ BroadcastException в /home/forge/mydomain.com/vendor/laravel/framework/src/Illuminate/Broadcasting/Broadcasters/PusherBroadcaster.php:117

Панель инструментов Horizon также предоставляет данные о событии:

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

Мои наблюдения:

  • Пушер подключается.authEndpoint попадает правильно.I
  • Канал присутствия работает.
  • Заметная разница между локальной машиной и производством заключается в том, что на производстве используется схема https

Я использую произвольный толкательидентификатор приложения, ключ и секрет (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')
        ],
    ],

Как это исправить?

1 Ответ

0 голосов
/ 19 апреля 2019

Для тех, у кого такая же проблема:

Я изменил хост на рабочий 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 file:

PUSHER_HOST=example.com

Не забудьте исключить http/https из хоста.Это не https://example.com, это example.com.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...