#laravel #websocket #server #laravel-websockets
#laravel #веб-сокет #сервер #laravel-веб-сокеты
Вопрос:
Я пытаюсь создать приложение для чата и для этого использую beyondcode / laravel-websockets. Когда я использовал его в локальном режиме, он отлично работал, но на сервере не может его запустить.
Мои конфигурации следующие
Мои настройки Echo (Js/Bootstrap.js )
window.Echo = new Echo({
broadcaster: 'pusher',
key: process.env.MIX_PUSHER_APP_KEY,
cluster: process.env.MIX_PUSHER_APP_CLUSTER,
encrypted: false,
wsHost: window.location.hostname,
wsPort: 6001,
});
Мои настройки толкателя (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' => false,
'host' => env('WEBSOCKET_HOST'),
'port' => env('WEBSOCKET_PORT'),
'scheme' => env('WEBSSOCKET_SCHEME'),
],
],
Мои настройки веб-сокета (Websockets.php )
'dashboard' => [
'port' => env('LARAVEL_WEBSOCKETS_PORT', 6001),
],
'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' => true,
'enable_statistics' => true,
],
],
Моя конфигурация .env
PUSHER_APP_ID=MyDefaultIdForURMENU
PUSHER_APP_KEY=1234567
PUSHER_APP_SECRET=MyDefaultSecretForURMENU
PUSHER_APP_CLUSTER=mt1
WEBSOCKET_HOST = 127.0.0.1
WEBSOCKET_PORT = 6001
WEBSSOCKET_SCHEME= http
MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"
Теперь, когда я запускаю websocket либо напрямую по ssh, либо с помощью setsid с помощью команды
php artisan websockets:serve
или
setsid php artisan websockets:serve
это показывает
Запуск сервера WebSocket на порту 6001…
Но журнал консоли показывает либо
Сбой подключения WebSocket к ‘wss://mydomain.com/app/1234567? protocol = 7 amp; client = js amp; version = 5.0.3 amp; flash = false’: Ошибка во время рукопожатия WebSocket: Неожиданный код ответа: 404
ИЛИ иногда
Сбой подключения веб-сокета к ‘ws: //mydomain.com: 6001/app/1234567? protocol = 7 amp; client = js amp; version = 5.0.3 amp; flash = false’: веб-сокет закрыт до установления соединения.
Пожалуйста, объясните мне, что я делаю не так
Ответ №1:
Привет, ребята, у меня возникла эта проблема, и я искал в Интернете сверху донизу и, наконец, сделал следующее, чтобы заставить его работать на VPS
1- Config/broadcasting.php
'pusher' => [
'driver' => 'pusher',
'key' => env('PUSHER_APP_KEY'),
'secret' => env('PUSHER_APP_SECRET'),
'app_id' => env('PUSHER_APP_ID'),
'options' => [
'useTLS' => true,
'encrypted' => true,
'host' => '127.0.0.1',
'port' => 6001,
'scheme' => 'https',
'curl_options' => [
CURLOPT_SSL_VERIFYHOST => 0,
CURLOPT_SSL_VERIFYPEER => 0,
]
]
]
2- Resources/js/bootstrap.js
window.Echo = new Echo({
broadcaster: 'pusher',
key: process.env.MIX_PUSHER_APP_KEY,
forceTLS: true,
encrypted: true,
wsHost: window.location.hostname,
wsPort: 6001,
wssPort: 6001,
enabledTransports: ['ws','wss'],
disableStats: true
});
3- Config/websockets.php
'ssl' => [
/*
* Path to local certificate file on filesystem. It must be a PEM encoded file which
* contains your certificate and private key. It can optionally contain the
* certificate chain of issuers. The private key also may be contained
* in a separate file specified by local_pk.
*/
'local_cert' => env('LARAVEL_WEBSOCKETS_SSL_LOCAL_CERT', null),
/*
* Path to local private key file on filesystem in case of separate files for
* certificate (local_cert) and private key.
*/
'local_pk' => env('LARAVEL_WEBSOCKETS_SSL_LOCAL_PK', null),
/*
* Passphrase for your local_cert file.
*/
'passphrase' => null,
'verify_peer' => false
],
4- .env
LARAVEL_WEBSOCKETS_SSL_LOCAL_CERT="../ssl/certs/filename.crt"
LARAVEL_WEBSOCKETS_SSL_LOCAL_PK="../ssl/keys/filename.key"
Шаги 3 и 4 также важны, как 1 и 2, вам необходимо указать пути к файлам .crt и .key. Путь может отличаться для разных серверов. вы можете перейти к папке public_html в вашем файловом менеджере cpanel и найти папку ssl для этих файлов.