2016-04-19 110 views
2

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

这里是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); 
    } 
} 
+2

什么是'server.js'?显示代码。某些控制台输出可能也很有用。 –

回答

1

OK,WebSockets的...

“升级要求” 的身份标志着一个WebSocket的握手开始。通常你的客户端首先将它发送到WS服务器。服务器以非常相似的方式回答(详细信息请参见:https://tools.ietf.org/html/rfc6455),然后继续管理实际数据。

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

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

+0

我有一个HTML与JavaScript和我编码var插座=新的WebSocket(“http:// localhost:8081”); –

+0

是否出现“需要升级”消息的上下文? –

+0

是的,那就是我想要使用的html。但它只是不显示我想要的HTML –

相关问题