Обычный вариант использования с подпиской заключается в том, что вы не хотите транслировать человеку, который инициировал трансляцию. Пример кода 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();
По сути, вам нужно получить идентификатор сокета при запуске трансляции, а затем отфильтровать его в методе фильтра. Или это уже возможно как-то?