Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

171
Vistas
La pantalla de React Native se vuelve lenta después de algún uso mientras recibe datos en vivo de SignalR Server

Esta pregunta mía va a ser un poco más larga.

Estoy usando react-native para desarrollar una aplicación comercial. He agregado native-base como una biblioteca de componentes.

La aplicación utiliza la fuente de datos en vivo del servidor signalr alojado en un servidor de escritorio.

Ese servidor de escritorio envía datos de mercado en vivo desde el proveedor de API y transmite esos datos a todos los clientes móviles conectados.

Ahora, el problema es que, al recibir esos datos en el móvil, la pantalla del móvil se vuelve muy lenta para la actualización de componentes y precios. Y en algún momento congela toda la aplicación y necesito reiniciarla nuevamente.

En mi aplicación móvil, tengo una pantalla de watchlist de observación que, al principio, carga los datos de nombres de acciones guardados de la base de datos en una FlatList y luego se conecta al servidor signalr para recibir datos en vivo.

Luego escucho la recepción de datos y actualizo los datos de FlatList con la actualización de estado, de modo que el precio en vivo se refleje en la lista. A veces funciona bien, pero después de un tiempo de uso, se vuelve lento y otros componentes de la GUI también se vuelven lentos.

El siguiente es el código que recibe, procesa y actualiza los datos en FlatList

 proxy.on("msgreceived", (msg) => { if (typeof this.state.watchlistsymboldata != "undefined") { this.state.watchlistsymboldata.forEach((item) => { if (item.Symbolid != undefined) { if (item.Symbolid === msg.symbolid) { //console.log(msg); item.bidprice = parseFloat(msg.bidprice).toFixed(2); item.bidqty = parseInt(msg.bidquantity); item.askprice = parseFloat(msg.askprice).toFixed(2); item.askqty = parseInt(msg.askquantity); item.ltp = parseFloat(msg.ltp).toFixed(2); item.open = parseFloat(msg.open).toFixed(2); item.high = parseFloat(msg.high).toFixed(2); item.low = parseFloat(msg.low).toFixed(2); item.timetraded = msg.timestamp; item.cellcolor = msg.cellcolor; item.bidcolor = msg.bidcolor; item.askcolor = msg.askcolor; this.setState({updateState:true});//THIS IS NEEDED TO REFLECT CHANGES } } }); } });

¿Cómo puedo hacer que esto funcione mejor sin una gran carga en la aplicación? Gracias.

about 4 years ago · Juan Pablo Isaza
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda