繁体   English   中英

net::ERR_CONNECTION_REFUSED 使用 websockets

[英]net::ERR_CONNECTION_REFUSED using websockets

我正在尝试使用 vanilla JavaScript 创建一个没有任何框架的 websocket。

我正在尝试发送一个基本的文本 websocket,但它不断向我抛出错误 net::ERR_CONNECTION_REFUSED

这是 repl.it 上的代码

我有一个内容安全策略集:

<meta http-equiv="Content-Security-Policy" content="default-src *; style-src 'self' 'unsafe-inline'; script-src * 'unsafe-inline' 'unsafe-eval'">

我的 websocket 在 9000 端口设置为 ws://localhost/。

无论如何,这是我的 script.js 文件:

 let a = new WebSocket("ws://localhost:9000"); a.onopen = () => { setTimeout(() => { a.send("working?"); }, 1000); }; a.onmessage = (event) => { console.log(event.data); }
和我的 srv.js(在 nodejs 中)文件:

 let server = require('ws').Server; let srv = new server({port: 9000}); srv.on('connection', ws => { ws.on('message', msg => { console.log(`Received message => ${msg}`) }) ws.send('hey') })

我看到我的这个老问题没有得到回答,之后我深入研究了 websockets 并发现我认为的问题是我没有设置'Access-Control-Allow-Origin': "*"在服务器使用 ws 将是:

let server = require('ws').Server;
let srv = new server({port: 9000, 'Access-Control-Allow-Origin': "*"});
srv.on('connection', ws => {
  ws.on('message', msg => {
    console.log(`Received message => ${msg}`)
  })
  ws.send('hey')
});

虽然我的问题是不正确的,因为 ws 是一个有助于 websockets 的外部模块,但任何认为在没有这个模块的情况下制作 websocket 服务器很容易的人都是错误的,这是可能的,但是像我的问题一样,一个简单的服务器的代码量需要近 50 行代码并不值得,因为 ws 具有许多特性,使其比不使用外部模块更容易和更可靠。

对于任何想要真正用于学习目的的人来说,这里解释了 websocket 协议,但由于他们不提供代码,我在 repl.it 上做了一个repl

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM