Laravel Pusher Websocket не работает по HTTPS

Я использую Laravel 5.8, и мы используем веб-сокет с PUSHER в нашем приложении. Он отлично транслируется локально или когда я нахожусь в режиме HTTP. Когда я обновляю свою настройку до HTTPS, трансляция больше не работает.

Any hints on this ? anyone ?

я пробовал

#Сторона клиента

window.Echo = new Echo({
    broadcaster: 'pusher',
    key: process.env.MIX_PUSHER_APP_KEY,
    cluster: process.env.MIX_PUSHER_APP_CLUSTER,
    wsHost: window.location.hostname,
    encrypted: false,
    // wsPort: 6001,
    // wssPort: 6001,
    disableStats: true,
    forceTLS: true,
    enabledTransports: ['ws', 'wss']
});

а также

# Серверная сторона

'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'),
        'scheme' => 'http',
        'useTLS' => true,
        'debug' => true,
        'curl_options' => [
            CURLOPT_SSL_VERIFYHOST => 0,
            CURLOPT_SSL_VERIFYPEER => 0,
            CURLOPT_IPRESOLVE => CURL_IPRESOLVE_V4
        ]
    ],
],

Тот же результат! Не работает!

Он отлично работает в Chrome локально, но firefox

Я вижу это в консоли

введите описание изображения здесь


person cyb3rZ    schedule 26.06.2020    source источник
comment
Есть ли ошибки в вашей консоли, выходите из вкладки сети в вашем браузере?   -  person Maarten Veerman    schedule 27.06.2020
comment
Я не вижу ошибок на вкладке сети или консоли;   -  person cyb3rZ    schedule 27.06.2020
comment
Попробуйте отключить шифрование? Обычно, когда нет журнала или ошибки, убедитесь, что драйвер правильно настроен на pusher и app_key должен быть таким же. В этом случае следует вывести ошибку рукопожатия или ошибку аутентификации в интерфейсной консоли.   -  person GTHell    schedule 27.06.2020
comment
@MaartenVeerman: Я проверил firefox, я случайно увидел ошибку на консоли, как вы и предсказывали. Теперь.   -  person cyb3rZ    schedule 28.06.2020
comment
Я думаю, что номер порта неверный. Вы подключаетесь к порту 6001, pusher использует стандартный 443 для безопасных соединений. См. support.pusher.com/hc/en-us/articles/   -  person Maarten Veerman    schedule 28.06.2020
comment
@MaartenVeerman Как вы думаете, у меня должно быть 2 настройки для локального и продакшна?   -  person cyb3rZ    schedule 28.06.2020
comment
Кроме того, ваш сервер слушает 443?   -  person Qumber    schedule 02.07.2020
comment
Проблема с @ cyber8200 уже решена?   -  person Maarten Veerman    schedule 05.07.2020


Ответы (3)


Вы не подключаетесь к правильному порту, или порт по умолчанию, установленный Echo, не является тем, который вы должны использовать для pusher по умолчанию. Определите правильный порт в .env файле внешнего интерфейса JavaScript. (Я не знаю настроек ваших репозиториев, но иногда вы можете использовать файл .env.local, например, в настройке Vue).

Похоже, что Pusher использует веб-порты 80 и 443 по умолчанию, как описано здесь: https://pusher.com/docs/channels/library_auth_reference/pusher-websockets-protocol

После того, как вы определили порт внутри своего .env, измените код JavaScript:

wsPort: process.env.MIX_PUSHER_WS_PORT, 
wssPort: process.env.MIX_PUSHER_WSS_PORT,

Не забудьте перестроить свой интерфейс.

person Maarten Veerman    schedule 28.06.2020
comment
Не забудьте перестроить свой интерфейс и очистить кеши браузера, кэширующие файлы javascript;) - person dbf; 17.07.2020

Я не могу писать комментарии из-за низкой репутации, поэтому напишу здесь:

Попробуйте изменить HTTP на HTTP S в 'scheme' = ›'http'.

Отметьте эту опцию в websockets.php

'verify_peer' = ›ложь,

Также ознакомьтесь с примерами конфигурации в этой статье:
https://www.digitalocean.com/community/questions/how-to-configure-laravel-websockets-with-ssl-on-nginx

person Pavel Cechir    schedule 15.07.2020

Поскольку вы упомянули, что это происходит локально, вы можете проверить эту проблему поскольку это может быть связано с тем, что вы испытываете ... по сути, есть обходной путь, обрисованный в общих чертах, чтобы заставить firefox работать с самоподписанными сертификатами, на сокетах ...

Кроме того, что произойдет, если вы удалите wss из этого конструктора:

window.Echo = new Echo({
    broadcaster: 'pusher',
    key: process.env.MIX_PUSHER_APP_KEY,
    cluster: process.env.MIX_PUSHER_APP_CLUSTER,
    wsHost: window.location.hostname,
    encrypted: false,
    // wsPort: 6001, <-- Should these be commented out?
    // wssPort: 6001, <-- Should these be commented out?
    disableStats: true,
    forceTLS: true,
    enabledTransports: ['ws'] // removed wss
});

Кроме того, у вас есть закомментированные порты ... это кажется странным, поскольку вам нужен порт для службы сокетов.

person rexfordkelly    schedule 22.07.2020