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.

Error al conectar al servidor socket.io en Windows Server en dotnet core.

Yo alojo una aplicación simple de socket IO de nodo en mi servidor de Windows, aquí está el ejemplo de código.

// socket.io 3.1.2
const puerto = 30080;
const servidorHttp = require(“http”).createServer();

const io = require(“socket.io”)(servidorHttp, {
cors: {
origin: “*”,
methods: [“GET”, “POST”],
allowedHeaders: [“Access-Control-Allow-Origin”],
credentials: false,
},
});

io.on(“connection”, (socket) => {
console.log(“En Conexión”);

io.emit(“message”, “Bienvenido a Socket Io.”);
});

Y escribí un poco de código para intentar conectarme a mi servidor de socket IO en un archivo HTML y funcionó bien. Aquí está el ejemplo de código.

//
const socket = io(“http://miIPdeservidor:30080”, {
withCredentials: false,
extraHeaders: {
“Access-Control-Allow-Origin”: “*”,
},
});

socket.on(“connect”, () => {
console.log(“conectado”);
});

socket.on(“message”, (mensaje) => {
console.log(mensaje);
});

Pero cuando intento usar ese código anterior en mi aplicación web .NET Core, obtengo el error “ERR SSL PROTOCOL ERROR”. Incluso publiqué mi aplicación web en el servidor de Windows y sigo obteniendo el mismo mensaje de error.

He intentado los protocolos http, https, ws y wss. Ninguno de ellos funciona. ¿Cómo puedo hacer que esto sea posible?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Parece que te estás enfrentando a un error de protocolo SSL al intentar conectarte a tu servidor de socket IO desde tu aplicación web .NET Core. Para solucionarlo, podrías intentar seguir los siguientes pasos:

    1. Verifica si tu servidor de socket IO está funcionando en una conexión HTTPS segura con un certificado SSL válido. Si no es así, es posible que necesites habilitar SSL en tu servidor y obtener un certificado SSL válido.
    2. Asegúrate de que tu aplicación .NET Core está ejecutándose en una conexión HTTPS mediante la habilitación del middleware UseHttps Redirection. Puedes hacer esto agregando el siguiente código a tu archivo Startup.cs:

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddHttpsRedirection(options =>
        {
            options.HttpsPort = 443;
        });
    
        // otra configuración
    }
    
    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
        app.UseHttpsRedirection();
    
        // otra configuración
    }
    
    1. Actualiza tu código de front-end para utilizar el protocolo seguro wss en lugar de https al conectarse al servidor de socket IO. Por ejemplo:
    const socket = io("wss://myserverip:30080", {
        withCredentials: false,
        extraHeaders: {
            "Access-Control-Allow-Origin": "*"
        }
    });
    
    1. Asegúrate de que tu firewall no está bloqueando el protocolo wss. Es posible que necesites agregar una regla para permitir el tráfico entrante en el puerto 30080 para el protocolo wss.

    2. Por último, podrías intentar utilizar un servidor proxy como Nginx o Apache para enrutar las conexiones entrantes a través de una conexión SSL. Esto te permitiría mantener tu servidor de socket IO funcionando en una conexión no SSL mientras aún proporcionas una conexión segura a tu aplicación .NET Core.

    Espero que esto ayude a resolver tu problema de conexión con tu servidor de socket IO desde tu aplicación .NET Core.

Comments are closed.