为什么node.js在尝试在本地主机上运行应用程序时需要升级?

当我尝试在本地主机服务器上运行我的node.js应用程序时,它不运行并要求进行必要的升级。 我试图运行代码,但我得到以下错误:

截图

服务器代码

var WebSocketServer = require('ws').Server, ws = new WebSocketServer({port: 80}), CLIENTS=[]; **new connection etablished** ws.on('connection', function(conn) { CLIENTS.push(conn); conn.on('message', function(message) { console.log('received: %s', message); sendAll(message); }); console.log("new connection"); conn.send("NOUVEAU CLIENT CONNECTE"); **if you close connection** conn.on('close', function() { console.log("connection closed"); CLIENTS.splice(CLIENTS.indexOf(conn), 1); }); }); **send messeages vers all clients** function sendAll (message) { for (var i=0; i<CLIENTS.length; i++) { var j=i+1; CLIENTS[i].send("Message pour le client "+j+": "+message); } } 

客户端代码

  <p> Result :<output name="" type="text" id="result" value"readonly"></output> </p> <input type="text" onchange="ws.send(this.value);"> </body> <script> var ws =new WebSocket('ws://localhost:80'); ws.onmessage=function(event){ document.getElementById("result").value=event.data; } </script> 

Upgrade Required是在客户端(即浏览器)和服务器之间build立WebSocket连接时发送的头部的引用。

就像@Prinzhorn在他的评论中所说的,你需要一个连接到你的WebSockets服务器的客户端应用程序,它可以是一个静态的HTML页面。 我build议你阅读这个介绍websockets更好地了解WebSockets如何工作。

您需要结合基于WebSocket的服务器和静态html生成器Express。 例如

 var express = require('express') var expressWs = require('express-ws') var app = express() expressWs(app) app.ws('/echo', (ws, req) => { ws.on('connection', function (connection) { //... }) ws.on('close', function () { //... }) }) app.use(express.static('public')) app.listen(3000, function () { console.log('Example app listening on port 3000!') }) 

在客户端代码中

 var ws = new WebSocket('ws://localhost:3000/echo'); ws.onmessage=function(event){ document.getElementById("result").value=event.data; }