Estoy siguiendo un tutorial de socket.io para crear una aplicación de chat simple. He instalado socket.io en el directorio con
npm instalar socket.io
pero nada funciona y me sale el mensaje de error
Solicitud de origen cruzado bloqueada: la política del mismo origen no permite leer el recurso remoto en http://localhost:3000/socket.io/?EIO=4&transport=polling&t=NuNNF0D. (Motivo: falta el encabezado CORS 'Access-Control-Allow-Origin'). Código de estado: 200.
Esto se muestra en el navegador cuando inspecciono el archivo index.html. Aparece otro mensaje de error en localhost:300
GEThttp://localhost:3000/ [HTTP/1.1 404 No encontrado 7ms]
No se declaró la codificación de caracteres del documento de texto sin formato. El documento se procesará con texto ilegible en algunas configuraciones del navegador si el documento contiene caracteres fuera del rango US-ASCII. La codificación de caracteres del archivo debe declararse en el protocolo de transferencia o el archivo debe usar una marca de orden de bytes como firma de codificación.
//server.js const io = require('socket.io')(3000); io.on('connection', socket => { console.log('new user'); socket.emit('chat-message', 'hello'); }) //script.js const socket = io('http://localhost:3000'); socket.on('chat-message', data => { console.log(data); }) <script defer src='http://localhost:3000/socket.io/socket.io.js'></script> <script defer src='script.js'></script>Solicitud de origen cruzado bloqueada
De la documentación :
Desde Socket.IO v3, debe habilitar explícitamente el uso compartido de recursos de origen cruzado (CORS).
const io = require("socket.io")(httpServer, { cors: { origin: "https://example.com", methods: ["GET", "POST"] } });
Aparece otro mensaje de error en localhost:3000
Bueno. Sí. El servidor que se ejecuta en el puerto 3000 está configurado para servir socket.io y solo socket.io. No ha hecho nada para decirle que sirva algo cuando el cliente lo solicite / por lo que le da un error de No encontrado.