2016-04-19 74 views
2

ブラウザでserver.jsとアドレス:http://localhost:8081を開いています。しかし、テキスト "Upgrade Required"がウェブサイトの左上に表示されます。 その問題は何ですか?他に何がアップグレードする必要がありますか?ここで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、WebSocketを...

"アップグレードに必要な" ステータスがのWebSocketハンドシェイクの開始をマーク。通常、クライアントはまずこれをWSサーバーに送信します。サーバーは非常に似た方法で応答し(詳細はhttps://tools.ietf.org/html/rfc6455)、次に実際のデータをパイプ処理します。

ここでは、クライアントからの接続を通常のhttpとして開き、簡単なGETを送信しています。画面上に表示されているのは、すでに壊れているハンドシェイクでサーバーが馬鹿に進んでいることです。

これは、WSクライアント側の接続を開く方法ではありません。通常、ブラウザからWSページを開くことはありません。それはnew WebSocket(uri)のようなJavaScriptコールから開くべきです。だからあなたが望むものは、実際のWS接続を開き、そのデータに役立つ何かをするのに必要なJavascriptを含むページを提供する、別のポート上の通常のhttpサーバです。あなたはここできれいな例を見つけるでしょう:http://www.websocket.org/echo.html

+0

私はjavascriptとhtmlを持っていて、私はvar socket = new WebSocket( "http:// localhost:8081")と書いています。 –

+0

「アップグレードが必要です」というメッセージが表示されるのはそのコンテキストですか? –

+0

ええ、それは私が使いたいHTMLです。しかし、それはちょうど私が望むHTMLを表示していません –

関連する問題