Я пытался найти лучшую практику для подписки на Маяк в течение 2 недель.
Но я не могу найти лучшую практику до сих пор.
Это моя shema.graphql
type Subscription {
rsvHolidaySub(id: ID): Rsv_holiday }
type Mutation {
updateHoliday(id: ID!, holiday_type: Int!): Rsv_holiday @update
@broadcast(subscription: "rsvHolidaySub") }
type Rsv_holiday {
id: ID!
holiday_type: Int!
start_time: String!
end_time: String! }
Когда я запрашиваю мутацию updateHoliday
, как показано ниже

Я надеюсь, что функция разрешения RsvHolidaySub вызывается из @broadcast(subscription: "rsvHolidaySub")
Так что я могу транслировать вот так
class RsvHolidaySub extends GraphQLSubscription
{
public function __construct() {}
public function authorize(Subscriber $subscriber, Request $request): bool {}
public function filter(Subscriber $subscriber, $root): bool {}
public function encodeTopic(Subscriber $subscriber, string $fieldName): string {}
public function decodeTopic(string $fieldName, $root): string {}
public function resolve($root, array $args, GraphQLContext $context, ResolveInfo $resolveInfo): Rsv_holiday
{
// I wanna call broadcast in here!!!!!!
broadcast(new SomeEvent);
return $root;
}
}
Я не знаю, что это лучшая практика для подписки. Но я думаю, что это очень просто и чисто.
Но даже если я установил websocket с помощью redis + laravel-echo-server или beyondcode / laravel-websockets, функция разрешения не вызывается.
Поэтому я сомневаюсь, что это возможно или нет.
Я действительно хочу узнать лучшие практики подписки на Lighthouse. Пожалуйста, поделитесь своими знаниями.