169 похожих чатов

Добрый вечер! Осваиваю вебсокеты (laravel websockets, vue js). Подскажите, пожалуйста, почему

возникают данные ошибки?

1) Unhandled promise rejection with TypeError: React\Http\Io\ClientRequestStream::closeError(): Argument #1 ($error) must be of type Exception, Error given, called in ...

2) Unhandled promise rejection with RuntimeException: Request timed out after 60 seconds in

Ошибка возникает примерно через минуту после включения вебсокет сервера.

Сами events отрабатывают нормально и далее после этой ошибки.

Я правильно понимаю, что мне надо как-то увеличить время listen очереди или проблема не в этом?

11 ответов

56 просмотров

Ошибку не так отлавливаешь. Должна быть Error, а прилетает Exception

Artem- Автор вопроса
Andrey Helldar
Ошибку не так отлавливаешь. Должна быть Error, а п...

То есть нужно еще в custom websocket handlers самому писать метод для отлавливания ошибки?

Artem
То есть нужно еще в custom websocket handlers само...

Скорее там где должно отлавливаться. Без полного кода сложно сказать почему именно это поведение срабатывает. Может снаружи что-то не то летит

Artem- Автор вопроса
Andrey Helldar
Скорее там где должно отлавливаться. Без полного к...

Спасибо, завтра буду смотреть еще раз, что не так.

app/Providers/BroadcastServiceProvider.php (не забыть раскоментировать в config/app.php) @see https://github.com/beyondcode/laravel-websockets/issues/879#issuecomment-1600879208 public function boot(): void { app(BroadcastManager::class)->extend('pusher-custom', function () { $pusher = new Pusher( config('broadcasting.connections.pusher.key'), config('broadcasting.connections.pusher.secret'), config('broadcasting.connections.pusher.app_id'), config('broadcasting.connections.pusher.options'), new Client(['verify' => false]), ); return new PusherBroadcaster($pusher); }); Broadcast::routes(); require base_path('routes/channels.php'); } laravel-worker.ini/conf (не знаю связано ли с событиями веб-сокетов, но на всякий случай прикладываю, может пригодиться) [program:laravel-worker] process_name=%(program_name)s_%(process_num)02d command=php /var/www/html/mydomain/artisan queue:work --queue=default --sleep=15 --tries=3 autostart=true autorestart=true user=user numprocs=1 redirect_stderr=true stdout_logfile=/var/www/html/mydomain/worker.log stopwaitsecs=15 websockets.ini/conf [program:laravel-websockets] directory=/var/www/html/mydomain/ command=php artisan websockets:serve --host=0.0.0.0 --port=6001 numprocs=1 autostart=true autorestart=true user=root redirect_stderr=true stderr_logfile=/var/log/websockets.err.log stdout_logfile=/var/log/websockets.out.log Что учесть ещё: - проверить открыт ли порт на сервере, не блокирует ли фаервол (у некоторых админов серверов может быть несколько слоёв защиты). - посмотреть какие порты и IP-адреса используются: netstat -ntlp | grep LISTEN - php artisan cache:clear - php composer dump-autoload - supervisorctl update - supervisorctl restart all - помнить что при изменении парамтеров .env VITE_* нужно пересобирать сборку: VITE BUILD - Если понижались версии пакетов, можно попробовать переустановить их в чистом виде (в том числе почистить таблицы и миграции beyondcode/laravel-websockets. + полезный комментарий на гитхабе: https://github.com/beyondcode/laravel-websockets/issues/589#issuecomment-715891226

Мои настройки для сайта на отдельном домене, при которых работает дашборд /laravel-websockets без ошибок, отправляются и принимаются сообщения. В моём случае используется сборщик Vite и Livewire. Может кому-то поможет. /etc/httpd/conf.d/ssl.conf Listen 443 <VirtualHost *:443> ServerName mydomain DocumentRoot /var/www/html/mydomain/public RewriteEngine on RewriteCond ${HTTP:Upgrade} websocket [NC] RewriteCond ${HTTP:Connection} upgrade [NC] RewriteRule ^/app/(.*)$ ws://127.0.0.1:6001/app/$1 [P,L] ProxyPass "/app" "ws://127.0.0.1:6001/app" ProxyPassReverse "/app" "ws://127.0.0.1:6001/app" # Прочие настройки </VirtualHost> composer.json версии пакетов "ext-curl": "*", "beyondcode/laravel-websockets": "^1.14", "guzzlehttp/guzzle": "^7.4.2", "laravel/framework": "^9.0", "livewire/livewire": "^2.12", "pusher/pusher-php-server": "7.2.3", npm версии пакетов "laravel-echo": "^1.15.2", "laravel-vite-plugin": "^0.7.8", "pusher-js": "^8.2.0", "vite": "^4.4.3", .env APP_URL_BASE=mydomain APP_URL=https://${APP_URL_BASE} LOG_LEVEL=debug BROADCAST_DRIVER=pusher-custom QUEUE_CONNECTION=database PUSHER_APP_ID=12345678 PUSHER_APP_KEY=12345678 PUSHER_APP_SECRET=01234567 PUSHER_APP_SCHEME=https PUSHER_APP_CLUSTER=mt1 PUSHER_PORT=6001 VITE_PUSHER_HOST="${APP_URL_BASE}" VITE_PUSHER_APP_KEY="${PUSHER_APP_KEY}" VITE_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}" LARAVEL_WEBSOCKETS_PORT="${PUSHER_PORT}" LARAVEL_WEBSOCKETS_DOMAIN="${APP_URL_BASE}" LARAVEL_WEBSOCKETS_PATH=laravel-websockets LARAVEL_WEBSOCKETS_SSL_LOCAL_CERT="/path/to/cert.pem" LARAVEL_WEBSOCKETS_SSL_LOCAL_PK="/part/to/private.pem" LARAVEL_WEBSOCKETS_SSL_PASSPHRASE=null LARAVEL_WEBSOCKETS_VERIFY_PEER=false LARAVEL_WEBSOCKETS_ALLOW_SELF_SIGNED=false config/websockets.php return [ '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' => false, 'enable_statistics' => true, 'encrypted' => true, ], ], '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), 'verify_peer' => env('LARAVEL_WEBSOCKETS_VERIFY_PEER', false), 'allow_self_signed' => env('LARAVEL_WEBSOCKETS_ALLOW_SELF_SIGNED', false), ], /* (остальное стандартно) */ ]; config/broadcasting.php return [ 'default' => env('BROADCAST_DRIVER', 'null'), 'connections' => [ 'pusher-custom' => [ 'driver' => 'pusher-custom' ], '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' => '127.0.0.1', 'port' => 6001, 'scheme' => 'https', 'curl_options' => [ CURLOPT_SSL_VERIFYHOST => 0, CURLOPT_SSL_VERIFYPEER => 0, ] ] ], ] ];

Arthur Shlain
app/Providers/BroadcastServiceProvider.php (не заб...

Arthur Shlain, мы обнаружили что Ваше сообщение больше чем наполовину состоит из кода. Рекомендуем сохранять примеры кода на внешних источниках, например, https://paste.laravel.io

Arthur Shlain
Мои настройки для сайта на отдельном домене, при к...

У супервизора пропустил команду supervisorctl reread, которую нужно запускать перед апдейтом чтобы обновить кэш раннее прочитанных конфигураций иначе "обновит" из кэша.

Artem- Автор вопроса
Arthur Shlain
Мои настройки для сайта на отдельном домене, при к...

Спасибо! Я сегодня просто перезапустил комп и все заработало, возможно в cache что-то не обновилось. Пойду дальше изучать)

Похожие вопросы

Обсуждают сегодня

Всем привет! Имеется функция: function IsValidChar(ch: UTF8Char): Boolean; var i: Integer; ValidChars: AnsiString; begin ValidChars := 'abcdefghijklmnopqrstuvwxyzABCDE...
Евгений
44
Чтобы перехватить все нажимания буков на форме, надо хук ставить? Пробовал на форме ОнКейДаун, оно ловит клаву если фокус не на компоненте с вводом текста
Serjone
15
лучше скажите, причём тут паскаль?
Alexey Kulakov
36
Всем привет! вывожу на общей стр дочерние ресурсыв каждом ресурсе галерея, и первая фотка должна выводиться на общей [!DocLister? &prepare=photo !]
Alekso
12
А можно вопрос? Мне сегодня сказали что у меня функция (которая просто заполняет массив значениями) не правильная void Full(double * arr, int n) { for (int i = 0; i < n; i...
† C E †
7
День добрый, подскажите пожалуйста, есть ли какой-то способ сказать ребару не компилировать определённое приложение? Всю доку их перечиатл ничего подобного не нашёл
Кирилл
14
Добрый вечер. Хочу чтобы у меня в классе поле было функцией, которая возвращает строку. Делаю так: interface ... TGetOutPath = function : String of object; ... protec...
Kirill Filippenok
12
Народ! Впервые клиенту пришло письмо от РКН, у вас, дескать, есть яндекс метрика, а нигде не написано, что вы ее юзаете. Никто не сталкивался?
Sasha Beep
14
Это может быть все-таки не флудвейт? у меня ботфазер принимает изменения и отображает даже что они изменились, на видео видно что он прислал якобы уже измененное описание, н...
OVERLINK
13
Здравствуйте, хочу сделать HelloWorld в консоли Дельфи, но функция API ничего не выводит, что я делаю не так? program Hello; {$APPTYPE CONSOLE} uses System.SysUtils, WinAPI.Wi...
Sergey Vinogradov
20
Карта сайта