Laravel + Vuejs + Laravel-Webscoket + Apache

Приветственное сообщество

У меня следующая проблема. У меня есть api, сделанный на Laravel, и интерфейс на vuejs. Проблема в том, что сокет работает только локально, но когда я загружаю оба проекта на общий хостинг, сокет выходит из строя и отображается сообщение об ошибке в консоли браузера.

Это конфигурация mi в config / 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'),
            'useTLS'                => true,
            'encrypted'             => false,
            'host'                  => 'backtotalv2.tastyboom.com',
            'port'                  => 6001,
            'scheme'                => 'https',
            'curl_options'          => [
                CURLOPT_SSL_VERIFYHOST => 0,
                CURLOPT_SSL_VERIFYPEER => 0,
            ]
        ],
    ],

Это моя конфигурация в config / websocket.php

'ssl' => [
    'local_cert' => env('LARAVEL_WEBSOCKETS_SSL_LOCAL_CERT', null),

    'local_pk' => env('LARAVEL_WEBSOCKETS_SSL_LOCAL_PK', null),

    'passphrase' => env('LARAVEL_WEBSOCKETS_SSL_PASSPHRASE', null),
],

Это мой main.js в моем vuejs:

import Echo from 'laravel-echo';

window.Echo = new Echo({
    broadcaster: 'pusher',
    key: '***************',
    cluster: 'tls',
    forceTLS: false,
    wsHost: '127.0.0.1',
    wssPort: 6001,
    wsPort: 6001,
    authEndpoint: `${config.url}/broadcasting/auth`,
    enabledTransports: ['ws', 'wss'],
    encrypted: false,
    auth: {
      headers: { 
        "Authorization": "Bearer " + token
      }
    }
});

Я попытался последовать этому примеру, но это не сработало Laravel + Nuxt + Nginx

Всегда показывать эту ошибку в консоли при работе

Ошибка изображения

Если кто-то может мне помочь, я буду полностью признателен.


person gaidyjg    schedule 05.03.2021    source источник


Ответы (1)


Мне кажется, что ваш сервер настроен для безопасной работы через TLS, поскольку для параметра useTLS установлено значение true, но в вашем клиенте для параметра encrypted и forceTLS установлено значение false. Также помните, что если ваш сайт работает по HTTPS, вы также вынуждены использовать зашифрованный WSS, поскольку WS работает только тогда, когда ваш сайт работает в незашифрованном виде по HTTP.

person Stellan Lindell    schedule 05.03.2021