Подписки GraphQL onConnect и onDisconnect - PullRequest
0 голосов
/ 16 июня 2020

Я пытаюсь реализовать поведение для подписок.

В основном onConnect Я хочу открыть поток GRP C для получения обновлений, а onDisconnect я хочу закрыть его. Я смотрю на это руководство , и, как я понял, эти методы не вызываются внутри листа графика, а используются для управления аутентификацией.

Что я хотел бы do выглядит примерно так:

grpcOpenStream(id, stream){
     stream.on('error', console.error);

     stream.on('data', ()=>{
         pubsub.publish('ObjectName',{    
                                        id: data.id,
                                        property1:data.property1
                                    }
           }
           );
     });

     stream.on('end',()=>client.close());

     let resp = stream.write(id);

}

grpcCloseStream(stream){
         stream.end();

}


Subscription: {
    ObjectName: (parent, args, context, info) =>{
      return variable.id
    },
}

ObjectName{
    property1(parent){
        const stream = client.Post();

        subscribe: withFilter(
        () => pubsub.asyncIterator('ObjectName'),
        (payload, variables) => {
          return payload.objectName.id === parent
        },
      ),

        onConnect(){
            grpcOpenStream(parent, stream)
        }
        onDisconnect(){
            grpcCloseStream(stream)
        }
    }

}

Этот код, как я представляю, должен работать, управляя им как запросом. Но проблема в том, что, похоже, невозможно управлять подписками как запросом через граф, использующий родительский механизм.

Внутри основной функции кажется возможным вызвать только подписку: withFilter ( ) функция. На самом деле я не знаю, как вызывать другие функции внутри основного метода после начала подписки.

Есть ли у кого-нибудь решение этой проблемы?

...