无法使用node.js连接localhost:8081

我在浏览器上打开了server.js和地址: http:// localhost:8081 。 但是在网站的左上angular出现了一个“需要升级”的文本。 那是什么问题? 还有什么我需要升级?

这里是server.js:

var serialport = require('serialport'); var WebSocketServer = require('ws').Server; var SERVER_PORT = 8081; var wss = new WebSocketServer({ port: SERVER_PORT }); var connections = new Array; SerialPort = serialport.SerialPort, portName = process.argv[2], serialOptions = { baudRate: 9600, parser: serialport.parsers.readline('\n') }; if (typeof portName === "undefined") { console.log("You need to specify the serial port when you launch this script, like so:\n"); console.log(" node wsServer.js <portname>"); console.log("\n Fill in the name of your serial port in place of <portname> \n"); process.exit(1); } var myPort = new SerialPort(portName, serialOptions); myPort.on('open', showPortOpen); myPort.on('data', sendSerialData); myPort.on('close', showPortClose); myPort.on('error', showError); function showPortOpen() { console.log('port open. Data rate: ' + myPort.options.baudRate); } function sendSerialData(data) { if (connections.length > 0) { broadcast(data); } } function showPortClose() { console.log('port closed.'); } function showError(error) { console.log('Serial port error: ' + error); } function sendToSerial(data) { console.log("sending to serial: " + data); myPort.write(data); } wss.on('connection', handleConnection); function handleConnection(client) { console.log("New Connection"); connections.push(client); client.on('message', sendToSerial); client.on('close', function () { console.log("connection closed"); var position = connections.indexOf(client); connections.splice(position, 1); }); } function broadcast(data) { for (c in connections) { connections[c].send(data); } } 

好吧,networking…

“需要升级”状态标志着websocket握手的开始。 通常,您的客户端首先将其发送到WS服务器。 服务器以非常相似的方式回答(细节在这里: https : //tools.ietf.org/html/rfc6455 ),然后继续pipe道实际的数据。

在这里,你打开一个从你的客户端作为普通的http连接,发送一个简单的GET。 你在屏幕上看到的是服务器愚蠢地进行已经损坏的握手。

这不是如何打开WS客户端连接。 您通常不会从浏览器打开WS页面。 它应该从JavaScript调用打开,比如new WebSocket(uri) 。 所以你想要的是另一个端口上的普通http服务器,它提供一个包含必要的Javascript的页面来打开实际的WS连接,并对其数据做一些有用的事情。 你会在这里find一个干净的例子: http : //www.websocket.org/echo.html