Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

243
Visualizações
Cómo actualizar los datos de enlace devueltos de RTK Query cuando se recibe un mensaje websocket

¿Alguien puede explicar cómo conectar la recepción de datos en un mensaje websocket al objeto de datos del enlace desde un punto final de API de RTK Query?

No necesitamos almacenar el mensaje que se recibe, solo queremos pasarlo en el argumento de datos del gancho useGetWebsocketResponseQuery para que podamos activar una notificación en la interfaz de usuario.

 reducerPath: 'someApi', baseQuery: baseQueryWithReauth, endpoints: (builder) => ({ getWebsocketResponse: builder.query<WebsocketResult, void>({ queryFn: () => ({data: {}), async onCacheEntryAdded(arg, { updateCachedData, cacheDataLoaded, cacheEntryRemoved }) { try { // wait for the initial query to resolve before proceeding await cacheDataLoaded; const socket = io('http://url', {}); socket.on('connect', () => { console.log('socket connected on rtk query'); }); socket.on('message', (message) => { console.log(`received message: ${message}`); // THIS IS WHERE THE DATA NEEDS TO BE WIRED UP TO THE HOOK BUT HOW? }); await cacheEntryRemoved; } catch { // no-op in case `cacheEntryRemoved` resolves before `cacheDataLoaded`, // in which case `cacheDataLoaded` will throw } } }), // Export hooks for usage in functional components, which are // auto-generated based on the defined endpoints export const { useGetWebsocketResponseQuery } = someApi;

Parece que esto debería ser posible en el controlador socket.on('message', {}), pero ¿cómo? El método updateCachedData parece que debería ser el camino a seguir, pero no estoy seguro de cómo implementarlo.

Toda la ayuda recibida con gratitud :-)

Muchas gracias,

Sam


ACTUALIZAR con solución de @phry

El problema era que los datos definidos en queryFn debían coincidir con la forma de lo que se agregó desde cacheDataLoaded, es decir, debería ser así:

 queryFn: () => ({data: { messages: [] }),

y

 socket.on('connect', () => { updateCachedData((currentCacheData) => { currentCacheData.messages.push(message); }); });
about 4 years ago · Juan Pablo Isaza
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda