es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

react native socket io no funciona en modo de producción

Tengo una aplicación de React Native a la que intento añadir una funcionalidad de chat, la cual funcionaba perfectamente como esperaba hasta que estaba lista para la producción. Todo el código funciona correctamente con expo start y el modo de desarrollo, pero cuando ejecuto la aplicación en modo de producción, los sockets no funcionan en absoluto, o lo hacen parcialmente.

Tengo dos aplicaciones, en una recibe pero no envía mensajes y en la otra no hace nada en absoluto (una es para Android y la otra para iOS).

Me conecto a mi socket io utilizando lo siguiente:

En App.js…

import { SocketContext, socket } from "./context/socket";

return (
  <socketcontext.provider value="{socket}">
    <safeareaprovider>
      <navigation colorscheme="{colorScheme}"></navigation>
      <statusbar></statusbar>
      <toast ref="{(ref)" ==""> Toast.setRef(ref)} />
    </toast></safeareaprovider>
  </socketcontext.provider>
);

En mi archivo socket.js tengo lo siguiente:

import OpenSocket from "socket.io-client";
import { API_URL } from "../constants/API";
import React from 'react';
import useRoom from "../tools/useRoom";
import useSession from "../tools/useSession"; 
import useUser from "../tools/useUser";
// import AsyncStorage from "@react-native-async-storage/async-storage";
// import { AsyncStorage } from "react-native";

export const userIDStorage = 'user-id'

export const socket = OpenSocket.connect(API_URL); 

socket.on('connect',()=>{
  console.log('user connected...');
});

export const SocketContext = React.createContext();

Y en mi página de chat tengo lo siguiente para llamar y emitir desde el socket:

import { SocketContext } from "../../context/socket";
const socket = useContext(SocketContext);

En el resto de la página solo llamo a socket.emit('algo', {data}); como tal …

En cualquier caso, no hay salida para obtener en las aplicaciones de modo de producción de expo, pero pude deducir que cuando la aplicación está en modo de producción, los sockets no se activan probando cada línea del código por separado en diferentes eventos… y cuando estoy en modo de desarrollo, todo funciona como debería.

Nota:

En el lado del servidor estoy utilizando un express alojado en Heroku, pero no he añadido nada sobre ello aquí porque he probado las aplicaciones en modo de desarrollo con el servidor de producción y funcionan bien, solo que cuando están en modo de producción ya no funcionan.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Parece que estás teniendo dificultades para hacer funcionar tu conexión de socket en modo producción para tu aplicación de React Native. Parece que has configurado correctamente tu conexión de socket en tus archivos App.js y socket.js, y estás utilizando el SocketContext para llamar y emitir desde el socket en tu página de chat. Sin embargo, cuando ejecutas la aplicación en modo producción, los sockets no se activan.

    Has probado la aplicación en modo desarrollo con el servidor de producción y funciona bien, por lo que parece que el problema está relacionado con el modo producción. Puede ser útil verificar los registros del servidor para ver si hay errores relacionados con la conexión de socket. Además, es posible que desees verificar las solicitudes de red en el navegador para ver si se están enviando correctamente.

Comments are closed.