Saltar al contenido

¿Cómo evitar que socket.io se desconecte cuando la aplicación reaccionar nativa está en segundo plano / el dispositivo está bloqueado?

Solución:

Después de leer un poco en línea, la razón por la que mi servidor de socket determinará que mi aplicación nativa de reacción está ‘muerta’ es porque todo el código javascript dentro de mi aplicación ha dejado de funcionar cuando mi dispositivo está bloqueado o en segundo plano.

Por lo tanto, he encontrado una solución para resolver este problema.

Herramientas que he utilizado:

  1. React Native Appstate
  2. Reaccionar temporizador de fondo nativo

Mi código del lado del cliente:

import React, {useEffect, useRef} from 'react';
import {AppState} from 'react-native'

export default () => {
  const appState = useRef(AppState.currentState);
  var interval

  const _handleAppStateChange = (nextAppState) => {
      if (
        appState.current.match(/inactive|background/) &&
        nextAppState === "active"
      ) {
        console.log("App has come to the foreground!");
        //clearInterval when your app has come back to the foreground
        BackgroundTimer.clearInterval(interval)
        
      }else{
        //app goes to background
        console.log('app goes to background')
        //tell the server that your app is still online when your app detect that it goes to background
        interval = BackgroundTimer.setInterval(()=>{
          console.log('connection status ', socket.connected)
          socket.emit('online')
        },5000)
      appState.current = nextAppState;
      console.log("AppState", appState.current);
  }

useEffect (() => {
    AppState.addEventListener("change", _handleAppStateChange);

    return () => {
      AppState.removeEventListener("change", _handleAppStateChange);
    };
},[])



}


Mi código del lado del servidor:

io.on('connection',(socket)=>{
  socket.on('online',()=>{
    //do nothing
  })
}
)

Esta solución funciona en mi aplicación. Ahora el enchufe no se desconectará hasta que cierre la aplicación o haga clic en el botón de desconexión.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *