Только ERR (P) ПОДПИСАТЬСЯ / (P) ПОДПИСАТЬСЯ Laravel Echo - PullRequest
1 голос
/ 19 сентября 2019

Добрый день!Я использую PrecenseChannel, и я ловлю присоединение / выход на стороне сервера, используя подписку на канал Redis. Я использую команду artisan:

public function handle()
{
    $this->info("Presence channel watcher was started!");
    Redis::subscribe(['PresenceChannelUpdated'] , function ($message, $channel) {
        //Code for comparing users who leave and who join
        Notification::send($a1->users, new ExampleNotification($a2, $data));
    }
}

Я использую уведомление для события отправки (только широковещание), но после отправки уведомления я получаюошибка в консоли:

ERR only (P)SUBSCRIBE / (P)UNSUBSCRIBE / PING / QUIT allowed in this contex

Без уведомления все работает и само уведомление работает и отправляет широковещательную рассылку

Поскольку я использую эти уведомления в Сервисах, следовательно, уведомление работает

Любая помощь?Спасибо

Ответы [ 2 ]

0 голосов
/ 20 сентября 2019

Как только подключение Redis подписывается на канал pubsub, оно становится подключением типа pubsub, которое позволяет только (P) ПОДПИСАТЬСЯ / (P) ОТМЕНИТЬ ПОДПИСКА / PING / QUIT.

Похоже, что вы пытаетесь использоватьто же самое соединение для других команд (возможно, данные R / W), которое приводит к этой точной ошибке.Решение состоит в том, чтобы иметь два объекта соединений, один подписчик и один для работы со всеми другими командами Redis.

0 голосов
/ 19 сентября 2019

Решение: Зайдите в php.ini и установите:

default_socket_timeout = -1

И добавьте соединение для Redis

Redis::connection('subscriber')->subscribe(['PresenceChannelUpdated'], callback)
...