Mam składnik WWW, który subskrybuje strumień.Jak buforować zdarzenia strumieniowe?
Ponieważ element sieciowy jest ponownie tworzony za każdym razem, gdy jest wyświetlany, muszę wyczyścić subskrybenta i ponownie go odtworzyć.
Teraz dodaję wszystkich abonentów do listy i removed()
metody cyklu życia robię:
subscriptions.forEach((sub) => sub.cancel());
Teraz do problemu: gdy składnik Web nie jest wyświetlana, nie ma jeden słucha strumienia. Problem polega na tym, że w komponencie brakuje danych/zdarzeń, które nie są wyświetlane.
Potrzebuję buforowania. Zdarzenia muszą być buforowane i wysyłane natychmiast po zarejestrowaniu odbiorcy. According to the documentation, buforowanie odbywa się do momentu zarejestrowania detektora:
Sterownik buforuje wszystkie przychodzące zdarzenia do momentu zarejestrowania subskrybenta.
To działa, ale problemem jest to, że słuchacz będzie w pewnym momencie usunięte i ponownie zarejestrowany i wydaje się to nie powoduje buforowanie.
Wygląda na to, że buforowanie odbywa się tylko początkowo, a nie później, nawet jeśli nie ma wszystkich słuchaczy.
Pytanie brzmi: w jaki sposób mogę buforować w tej sytuacji, w której słuchacze mogą zniknąć i wrócić?
Dokładnie to, co chciałem. Dziękuję Ci! Myślę, że zawinę to w implementację 'BufferedStreamController' (lub czegoś), ponieważ potrzebuję tego w kilku miejscach. –
Edytował kod: Zapomniałem o równoczesnych modyfikacjach. Kiedy wydarzenie jest emitowane, chcemy, aby słuchacze mogli subskrybować lub wypisać się. –