Я использую пакет 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')
],
],
Как это исправить?