Что такое лучшая практика подписки на Lighthouse GraphQL? - PullRequest
0 голосов
/ 07 октября 2019

Я пытался найти лучшую практику для подписки на Маяк в течение 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, как показано ниже

enter image description here

Я надеюсь, что функция разрешения 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. Пожалуйста, поделитесь своими знаниями.

1 Ответ

2 голосов
/ 23 октября 2019

Я запускаю все свои подписки из кода .

Но я также не использую эти директивы @create or @update, а просто поле, поэтому я делаю все, что хочув моем коде, а затем просто запустить подписку, даже с любыми другими данными ... У меня отлично работает.

Но я не знаю, что будет "лучшие практики".

...