Javascript 为什么node.js在本地主机上运行应用程序时需要升级?
当我尝试在本地主机服务器上运行node.js应用程序时,它不会运行,需要进行必要的升级。我已尝试运行代码,但出现以下错误: 服务器代码Javascript 为什么node.js在本地主机上运行应用程序时需要升级?,javascript,node.js,websocket,real-time,Javascript,Node.js,Websocket,Real Time,当我尝试在本地主机服务器上运行node.js应用程序时,它不会运行,需要进行必要的升级。我已尝试运行代码,但出现以下错误: 服务器代码 var WebSocketServer = require('ws').Server, ws = new WebSocketServer({port: 80}), CLIENTS=[]; **new connection etablished** ws.on('connection', function(conn) {
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>
var WebSocketServer=require('ws')。服务器,
ws=新的WebSocketServer({port:80}),
客户=[];
**新连接已启用**
ws.on('connection',函数(conn){
客户。推送(康涅狄格州);
连接on(信息),功能(信息){
console.log('接收到:%s',消息);
sendAll(消息);
});
控制台日志(“新连接”);
conn.send(“新客户连接”);
**如果你关闭连接**
连接on('关闭',函数(){
控制台日志(“连接关闭”);
客户。拼接(客户。索引of(conn),1);
});
});
**向所有客户端发送消息**
函数sendAll(消息){
for(var i=0;i需要升级
是对在客户端(即浏览器)和服务器之间建立WebSocket连接时发送的标头的引用
正如@Prinzhorn在其评论中所述,您需要一个连接到WebSocket服务器的客户端应用程序,它可以是一个静态html页面。我建议您阅读以更好地了解WebSocket的工作原理。您需要将基于WebSocket的服务器与静态html生成器Express相结合。
比如说
var express=require('express'))
var expressWs=require('express-ws')
var app=express()
expressWs(应用程序)
app.ws('/echo',(ws,req)=>{
ws.on('connection',函数(connection){
//...
})
ws.on('close',函数(){
//...
})
})
应用程序使用(express.static('public'))
应用程序侦听(3000,函数(){
log('端口3000上侦听的示例应用程序!')
})
在客户端代码中
var ws=newwebsocket('ws://localhost:3000/echo');
ws.onmessage=函数(事件){
document.getElementById(“结果”).value=event.data;
}
不要将客户端HTML文件作为本地主机URL打开,而是直接打开该文件
运行web套接字服务器后
localhost:[port]/client.html
->您将收到消息“需要升级”
文件:///[folder]/client.html
->您可以看到您的html文件
因为您没有任何带有web套接字的web服务器,或者您没有为web套接字配置web服务器。因此,您应该使用文件系统
最简单的方法是使用鼠标右键单击客户端文件,然后使用您喜爱的浏览器打开它。问题是您的web套接字服务器正在端口80上运行,因此当您使用浏览器打开html模板时,实际上是在打开web套接字服务器。这是因为在浏览器中打开的网页默认使用端口80
要修复此问题,请将web套接字服务器的端口设置为3000之类的其他端口
ws=newwebsocketserver({port:3000})
然后,当您在浏览器中打开页面时,它将打开实际的html页面,而不是web套接字服务器。您是否也有一个为您的html提供服务的http服务器?因为它看起来像是您试图使用浏览器导航到web套接字。不,我的应用程序中没有http服务器。您将如何显示html(客户端代码)您已经发布了吗?我会将http服务器添加到我的代码中如果您有任何解决方案,请告诉我们?我正在使用您的代码,我在控制台中收到示例应用程序在端口3000上侦听!
消息,但仍然存在相同的问题