Zarządzanie stanem · Senior · Pytanie 51 z 75
Jak zapisywać aktualizacje z WebSocketa do wpisu bufora RTK Query?
async onCacheEntryAdded(arg, { updateCachedData, cacheDataLoaded, cacheEntryRemoved }) {
await cacheDataLoaded;
const ws = new WebSocket(url);
ws.onmessage = (e) => updateCachedData((draft) => { draft.push(JSON.parse(e.data)); });
await cacheEntryRemoved;
ws.close();
}- ✓Poprawna odpowiedź: Użyć cyklu życia endpointu
onCacheEntryAddedzupdateCachedDatai zamykać gniazdo przy usunięciu wpisu - 2Wysyłać zwykłą akcję slice'a z
ws.onmessagei kopiować dane ręcznie - 3Odpytywać endpoint co 100 ms
Wyjaśnienie
Gniazdo żyje dokładnie tak długo, jak wpis bufora ma choć jednego subskrybenta, a aktualizacje przechodzą przez drafty Immera jak inne aktualizacje bufora.