Estoy usando el siguiente código para obtener las actualizaciones de un servidor:
const { ActionCable } = require('@sorare/actioncable'); const cable = new ActionCable({ headers: { // 'Authorization': `Bearer <YourJWTorOAuthToken>`, // 'APIKEY': '<YourOptionalAPIKey>' } }); var query = "aCardWasUpdated(rarities: [limited, rare, super_rare, unique]) " + "{slug, id, onSale, rarity, liveSingleSaleOffer{price, blockchainId, endDate, open}, player{displayName}}"; cable.subscribe(query, { connected() { console.log(new Date().toLocaleString()); console.log("connected"); }, disconnected(error) { console.log(new Date().toLocaleString()); console.log("disconnected", error); }, rejected(error) { console.log(new Date().toLocaleString()); console.log("rejected", error); }, received(data) { console.log(new Date().toLocaleString()); if (data?.result?.errors?.length > 0) { console.log('error', data?.result?.errors); return; } const aCardWasUpdated = data?.result?.data?.aCardWasUpdated; if (!aCardWasUpdated) { console.log("A card was not updated"); return; } console.log("card"); } });Ese código funciona bien durante algunos minutos, pero después de un tiempo aleatorio, deja de imprimir cualquier cosa.
Estoy ejecutando el código en una terminal de screen usando node code.js (y luego separando la terminal con ctrl+a+d); pero obtengo el mismo resultado usando un terminal "normal" . ¿Cual podría ser el problema? ¿Hay algún caso dentro de la función de subscribe que no estoy considerando?
En primer lugar, recomiendo usar Socket.io para trabajar con sockets en lugar de sorare .
Su código es correcto y si no hay registros relacionados con eventos de 'disconnect' o 'rejected' , tampoco hay problema con su conexión. tal vez haya un problema con la emisión de eventos de su servidor de destino y su servidor no recibe ningún evento después de un tiempo.