为什么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; }