2016-04-19 3 views
2

Я открыл server.js и адрес: http://localhost:8081 в моем браузере. Но затем в верхнем левом углу сайта появился текст «Требуется обновление». В чем проблема? Что еще мне нужно для обновления?не удается подключиться к localhost: 8081 using node.js

Вот это 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 и i закодированный var socket = new WebSocket ("http: // localhost: 8081"); –

+0

Это контекст, в котором появилось сообщение «upgrade required»? –

+0

Да, это html, который я хочу использовать. Но это просто не показывает HTML, я хочу –

Смежные вопросы