Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

186
Visualizações
Cómo mantener el cliente socket.io en el código frontend

Estoy aprendiendo webdev y quiero intentar hacer un juego multijugador usando Express y socket.io

Puedo hacer un servidor con socket.io que escuche. Esa parte funciona bien.

Sin embargo, cuando trato de conectar un cliente, esto solo funciona si dejo que el servidor sirva el archivo HTML con lo siguiente:

Código del servidor:

 const express = require('express') const app = express() const http = require('http') const server = http.createServer(app) const { Server } = require('socket.io') const io = new Server(server) const port = 3000 io.on('connection', (sock) => { console.log('client connected') }) // This seems to be necessary, but I don't want it to be!!! app.get('/', (req, res) => { res.sendFile(__dirname + '/index.html') }) server.listen(port, () => { console.log(`Server listening on port ${port}`) })

Este index.html tiene lo siguiente en la parte inferior:

 <script src="/socket.io/socket.io.js"></script> <script>const socket = io()</script>

Sin embargo, quiero mantener todo mi código frontend separado del servidor. Hice un repositorio separado para el frontend y el backend. Quiero que la interfaz contenga toda la lógica de la interfaz de usuario y use solo llamadas de datos (AJAX) para obtener datos Json del servidor. Así que quiero poner este archivo index.html solo en mi código de interfaz.

Sin embargo, si hago esto, la conexión no funciona.

Puedo iniciar el servidor bien. Abro index.html desde WebStorm que también crea un servidor para esto que configuré para escuchar también el puerto 3000

Sin embargo, no puede encontrar /socket.io/socket.io.js y aparece el siguiente error en la consola. Tampoco funciona si WebStorm se ejecuta en un puerto diferente.

 The resource from “http://localhost:3000/socket.io/socket.io.js” was blocked due to MIME type (“text/html”) mismatch (X-Content-Type-Options: nosniff).

¿Cómo puedo mantener este html solo en el repositorio de mi cliente y seguir trabajando con socket.io, o no es posible?

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

No puede tener varios servidores escuchando en el mismo puerto. Ejecute los servidores en diferentes puertos y:

  • Tenga un proxy inverso que reenvíe solicitudes a su servidor Socket.io (que necesita un manejo especial ) y su servidor front-end o
  • Coloque una URL absoluta en el script src y configure CORS .
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda