2016-04-19 146 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 –

相關問題