Я пытаюсь реализовать поведение для подписок.
В основном 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 ( ) функция. На самом деле я не знаю, как вызывать другие функции внутри основного метода после начала подписки.
Есть ли у кого-нибудь решение этой проблемы?