Entonces, estoy usando el paquete ws para mi backend, y este es mi servidor que copié de la página de inicio:
import { WebSocketServer } from 'ws' const wss = new WebSocketServer({ port: 8080 }) wss.on('connection', function connection(ws) { ws.on('message', function message(data) { console.log('received: %s', data) }) ws.send('something') })Ahora, en la consola de mi navegador ejecuto esto:
const socket = new WebSocket("ws://localhost:8080")me sale un error:
Política de seguridad de contenido: la configuración de la página bloqueó la carga de un recurso en ws://localhost:8080/ ("connect-src").
He buscado en Google y parece que la conexión debería ser segura para que funcione. Sin embargo, MDN y otras fuentes no lo mencionan en ninguna parte. ¿Estoy haciendo algo mal? Agradecería cualquier ayuda.
Este error se debe a la Política de seguridad de contenido ( mdn ), tal como está escrito allí. Y si estuviera ejecutando un servidor local e intentara esto en eso, habría funcionado.
en la consola de mi navegador ejecuto esto
Entonces, aquí hay un problema. La nueva pestaña, o donde sea que hayas ejecutado esto, podría haber bloqueado esta solicitud para proteger contra XSS o algo así. Lo más fácil para que esto funcione es agregar una metaetiqueta <meta http-equiv="Content-Security-Policy" content="connect-src 'ws://localhost:8080';"> a la página HTML o ejecutar un servidor local.
La creación de una conexión websocket en la consola de un navegador estaba fallando por alguna razón, sin embargo, después de crear una página html simple con un script, funcionó sin problemas:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Document</title> </head> <body></body> <script> const socket = new WebSocket('ws://localhost:8080') console.log(socket) </script> </html>Espero que ahorre algo de tiempo para otras personas.