Метод фильтра подписки и Echo's toOthers () - PullRequest
0 голосов
/ 10 февраля 2020

Обычный вариант использования с подпиской заключается в том, что вы не хотите транслировать человеку, который инициировал трансляцию. Пример кода Laravel Lighthouse делает то же самое, но ожидает, что вы сохраните идентификатор пользователя в базе данных.

см. документы

/**
 * Filter which subscribers should receive the subscription.
 *
 * @param  \Nuwave\Lighthouse\Subscriptions\Subscriber  $subscriber
 * @param  mixed  $root
 * @return bool
 */
public function filter(Subscriber $subscriber, $root): bool
{
    $user = $subscriber->context->user;
    // Don't broadcast the subscription to the same
    // person who updated the post.
    return $root->updated_by !== $user->id;
}

Это это наивное предположение. Один и тот же пользователь может работать на нескольких вкладках, и предполагается, что идентификатор пользователя сохранен.

Разве не было бы хорошо, если бы у нас было что-то похожее на Laravel Echo's, "toOthers"

broadcast(new ShippingStatusUpdated($update))->toOthers();

По сути, вам нужно получить идентификатор сокета при запуске трансляции, а затем отфильтровать его в методе фильтра. Или это уже возможно как-то?

...