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.

Socket.io despliegue en gh-pages

Así que estoy haciendo un pequeño estudio sobre socket.io y quiero implementarlo en mis gh-pages.

Puedo implementarlo, pero lo estaba haciendo de forma independiente en localhost.

Pero no puedo encontrar qué puerto usar para gh-pages y sigo obteniendo un error 404 en socket.io.


// Lado del cliente var socket = io('https://chokitu.github.io/chatsecreto/'); // Supongo que debería tener un puerto aquí.

// Lado del servidor const io = require('socket.io')(server, { cors: { origin: "https://chokitu.github.io", methods: ["GET", "POST"] } }); app.set('port', process.env.PORT || 3000); server.listen(port);

Creo que esas son las líneas que serían útiles.

Soy un poco nuevo en express y socket, así que…

Y este es el error que estoy obteniendo:
polling-xhr.js:157 GET https://chokitu.github.io/socket.io/?EIO=4&transport=polling&t=NtV5xap 404

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Parece que el problema puede estar relacionado con el número de puerto que no se especifica correctamente. Al implementar en GitHub Pages, el número de puerto predeterminado es 443 para solicitudes HTTPS y 80 para solicitudes HTTP. Por lo tanto, no es necesario especificar explícitamente el número de puerto. En su lugar, puede modificar el código del lado del cliente de la siguiente manera:

    // Lado del cliente
    var socket = io(); // No es necesario especificar el número de puerto al implementar en GitHub Pages.
    

    Además, parece que el error que estás recibiendo está relacionado con el polling, que es un método de transporte de respaldo que se utiliza cuando los websockets no están disponibles. Dado que GitHub Pages solo admite solicitudes HTTPS, asegúrate de que el código del lado del servidor también esté configurado para utilizar HTTPS. Es posible que debas modificar tu código del lado del servidor a algo como esto:

    // Lado del servidor
    const io = require('socket.io')(server, {
        cors: {
            origin: "https://chokitu.github.io",
            methods: ["GET", "POST"]
        },
        transports: ['websocket'] // Utilizar solo websockets como transporte
    });
    
    const port = process.env.PORT || 443; // Utilizar el número de puerto predeterminado para solicitudes HTTPS
    serveHttps(app);
    server.listen(port);
    
    // Una función para crear y servir el servidor HTTPS
    function serveHttps(app) {
      const fs = require('fs');
      const https = require('https');
      const options = {
        key: fs.readFileSync('server.key'),
        cert: fs.readFileSync('server.crt'),
        ca: fs.readFileSync('ca.crt')
      };
    
      https.createServer(options, app).listen(port, function() {
        console.log('Servidor en ejecución en el puerto: %d', port);
      });
    }
    

    Estos cambios deben garantizar que tu aplicación funcione correctamente al implementarla en GitHub Pages. ¡Buena suerte!

Comments are closed.