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.

¿Por qué mi videochat de socket.io no funciona en Heroku?

Soy nuevo en WS y Heroku y todo eso… así que tengo este código

// esto configura los sockets del lado del cliente supongo

import {io} from ‘socket.io-client’;

const options = {
“force new connection”: true,
reconnectionAttempts: “Infinity”,
timeout : 10000,
transports : [“websocket”]
}

const socket = io(‘/’, options)

export default socket;

Y para el lado del servidor

const path = require(‘path’);
const express = require(‘express’);
const app = express();
const server = require(‘http’).createServer(app);
const io = require(‘socket.io’)(server);
const {version, validate} = require(‘uuid’);

const ACTIONS = require(‘./src/socket/actions’);
const PORT = process.env.PORT || 3001;
//más código

Cuando se despliega en Heroku, esto resulta en esta aplicación https://lit-atoll-99067.herokuapp.com/ y la consola de Chrome dice:

La conexión WebSocket con ‘wss://lit-atoll-99067.herokuapp.com/socket.io/?EIO=4&transport=websocket’ falló: WebSocket se cerró antes de establecer la conexión.

Así que me quedé sin ideas. Pero supongo que esto tiene que ver con el puerto o algo así… realmente no sé. ¡Cualquier idea es bienvenida!

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Parece que la conexión de WebSocket está fallando cuando la aplicación es desplegada en Heroku. Una razón puede ser porque el servidor no está correctamente configurado para manejar conexiones de WebSocket.

    Para configurar el servidor para conexiones de WebSocket, necesitas utilizar la opción de transporte WebSocket en Socket.io. Esto puede hacerse inicializando el servidor de Socket.io con el siguiente código:

    const io = require('socket.io')(server, {
      transports: ['websocket']
    });
    

    Esto asegurará que el servidor esté configurado para manejar conexiones de WebSocket correctamente.

    Otro problema que podría causar que la conexión de WebSocket falle es el uso de un puerto diferente al especificado en el código. Asegúrate de que el puerto especificado en el código coincida con el utilizado por Heroku.

    Si estas soluciones no funcionan, puedes intentar agregar algunas declaraciones de registro al código para ver si hay algún error que esté provocando que la conexión de WebSocket falle.

Comments are closed.