У меня есть react-apollo@3.1.3 реализация внутри приложения React, где я подписываюсь на события внутри компонентов Apollo Query с помощью обратного вызова subscribeToMore
<Query query={...} variables={...}>
{( { loading, error, data, subscribeToMore } ) => {
if ( !this.unsubscribe )
this.unsubscribe = subscribeToMore({
document: ...,
updateQuery: ...
})
}}
</Query>
Я уже console.log( this.unsubscribe )
функция возврата subscribeToMore:
if ( _this.subscriptions.delete( subscription ) ) { subscription.unsubscribe(); }
, что имеет смысл; технически, позволяя мне просто сделать:
componentWillUnmount () => { this.unsubscribe(); }
Тем не менее, я монтирую и размонтирую компонент несколько раз, пока мой сервер не выдаст:
(node:14070) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 31
TURN_UPDATE listeners added.
Use emitter.setMaxListeners() to increase limit
Killed
И мой перерывы в работе сервера!
Это позволяет сделать вывод, что я, вероятно, неправильно выполняю процесс отмены подписки, и я был бы очень признателен за некоторые обходные пути или правильную реализацию подписки.
Я уже посмотрел документы Apollo, но они просто не погружаются в подписки достаточно глубоко.