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

254
Visualizações
Obtener datos de WebSocket React

Obtengo datos de un Websocket en un Componente:

 function Data() { const [price, setPrice] = useState(""); const [date, setDate] = useState(""); const ws = new WebSocket( "wss://stream.tradingeconomics.com/?client=guest:guest" ); const subscription = { topic: "subscribe", to: "EURUSD:CUR" }; const initWebsocket = () => { ws.onopen = () => { console.log("Connection Established!"); ws.send(JSON.stringify(subscription)); }; ws.onmessage = (event) => { const response = JSON.parse(event.data); setPrice(response.price.toFixed(3)); let today = new Date(response.dt * 1); const options = { year: "numeric", month: "long", day: "numeric", hour: "numeric", minute: "numeric", second: "numeric", }; let date = today.toLocaleDateString("en-EN", options); setDate(date); //ws.close(); }; ws.onclose = () => { console.log("Connection Closed!"); //initWebsocket(); }; ws.onerror = () => { console.log("WS Error"); }; }; useEffect(() => { initWebsocket(); // cleanup method which will be called before next execution. in your case unmount. return () => { ws.close(); }; }, []); // useEffect(() => { // setTimeout(initWebsocket(), 10000); // }, []); return ( <div> Price : {price} Last Update: {date} </div> ); } export default Data;

Dos preguntas sobre esto:

  1. con este código, en algún momento obtengo el error de recursos insuficientes, pero los datos aún se recuperan... No sé por qué. 2) si uso el useEffect comentado, todavía obtengo datos del socket web además del setTimeout ... ¿Cómo puedo obtener datos solo cada 10 segundos?
about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

puede usar setInterval para ejecutar un bloque de código dentro de un período definido.

 setInterval(()=>{your function}, 10000)

Esta fue solo la respuesta a su última pregunta. Si desea ejecutar un código periódicamente, setInterval es su tipo.

Edité un poco tu código en code sandbox:

 import "./styles.css"; import { useState, useEffect } from "react"; export default function App() { const [price, setPrice] = useState(""); const [date, setDate] = useState(""); const subscription = { topic: "subscribe", to: "EURUSD:CUR" }; useEffect(() => { const ws = new WebSocket( "wss://stream.tradingeconomics.com/?client=guest:guest" ); ws.onopen = () => { console.log("Connection Established!"); ws.send(JSON.stringify(subscription)); }; ws.onmessage = (event) => { const response = JSON.parse(event.data); console.log(response); if (response.topic === "EURUSD") { setPrice(response.price.toFixed(3)); let today = new Date(response.dt * 1); const options = { year: "numeric", month: "long", day: "numeric", hour: "numeric", minute: "numeric", second: "numeric" }; let date = today.toLocaleDateString("en-EN", options); setDate(date); } //ws.close(); }; ws.onclose = () => { console.log("Connection Closed!"); //initWebsocket(); }; ws.onerror = () => { console.log("WS Error"); }; return () => { ws.close(); }; }, []); // useEffect(() => { // setTimeout(initWebsocket(), 10000); // }, []); return ( <div> <p>Price : {price}</p> <p>Last Update: {date}</p> </div> ); }

lo que hice, básicamente puse toda la conexión del socket dentro de useEffect y también puse una condición if para la respuesta.

https://codesandbox.io/embed/dark-fog-msg3v?fontsize=14&hidenavigation=1&theme=dark

about 4 years ago · Juan Pablo Isaza Relatório
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