в Kubernetes pod нельзя заставить Laravel Echo (используя Pusher) подключаться через протокол ws через порт 6001 вместо wss на порт 443 - PullRequest
0 голосов
/ 31 марта 2020

Мне сложно понять, как подключить наше приложение Laravel к серверу веб-сокетов, расположенному на порту 6001. На моей локальной машине все работает нормально, но при развертывании в Kubernetes я получаю следующие ошибки в консоли :

Pusher :  : ["Connecting",{"transport":"ws","url":"wss://localhost:443/app/[redacted]?protocol=7&client=js&version=5.1.1&flash=false"}]
app.js:1 WebSocket connection to 'wss://localhost/app/[redacted]?protocol=7&client=js&version=5.1.1&flash=false' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED

Мне не имеет смысла, что URL-адрес, о котором сообщает Pusher, равен wss://localhost:443, но фактическое соединение пытается wss://localhost на порту :80.

. Далее Я явно установил enabledTransports: ['ws'] и не предоставил wssHost или wssPort.

Кроме того, поскольку это соединение выполняется в модуле Kubernetes, я предпринял все шаги для отключения SSL , Ниже приведены мои конфиги:

config / websockets. php:

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

resources / js / store / state. js

...
import Echo from 'laravel-echo'
/**
 * Echo exposes an expressive API for subscribing to channels and listening
 * for events that are broadcast by Laravel. Echo and event broadcasting
 * allows your team to easily build robust real-time web applications.
 */

window.Pusher = require('pusher-js');
window.Pusher.logToConsole = true;

let state = {
        ads:{},
        latestAds: [],
        selectedAds: [],
        partCodes:[],
        carCodes:[],
        echo: new Echo({
            broadcaster: 'pusher',
            key: [redacted],
            wsHost: 'localhost',
            wsPort: 6001,
            disableStats: true,
            enabledTransports: ['ws'], // <- added this param
            auth: {
                headers: {
                    Authorization: 'Bearer ' + localStorage.getItem('admanager-token'),
                    'X-CSRF-Token': "CSRF_TOKEN"
                }
            },
            'cluster': 'eu',
        })

    }

export default state
...
...