Das Web-Socket von node.js stürzt ab, wenn die Clientverbindung getrennt wird

Ich bin sehr neu inNodeJS undWebsockets, aber ich versuche damit zu spielen.

Ich lese eingehende Daten von der seriellen Schnittstelle und sende sie dann über Websocket an eine Webseite. Von hier aus funktioniert alles gut.

ich benutzeknotenstatisch um meine Webseite zu bedienenich benutzews für websocket

Wenn ein Client seinen Browser schließt, stürzt mein NodeJS-Websocket-Server mit der folgenden Fehlermeldung ab:

root@WS-SERVER-2:~/app# node socketserver.js
open serial communication
Client disconnected.

/root/node-v0.10.29/lib/node_modules/ws/lib/WebSocket.js:187
    else throw new Error('not opened');
               ^
Error: not opened
    at WebSocket.send (/root/node-v0.10.29/lib/node_modules/ws/lib/WebSocket.js:187:16)
    at sendAll (/root/app/socketserver.js:30:16)
    at SerialPort.<anonymous> (/root/app/socketserver.js:58:8)
    at SerialPort.emit (events.js:95:17)
    at Object.module.exports.raw [as parser] (/root/node-v0.10.29/bin/node_modules/serialport/parsers.js:8:13)
    at Object.SerialPort.options.dataCallback (/root/node-v0.10.29/bin/node_modules/serialport/serialport.js:143:15)
    at SerialPortFactory.SerialPort._emitData (/root/node-v0.10.29/bin/node_modules/serialport/serialport.js:312:20)
    at afterRead (/root/node-v0.10.29/bin/node_modules/serialport/serialport.js:290:18)
    at /root/node-v0.10.29/bin/node_modules/serialport/serialport.js:304:9
    at Object.wrapper [as oncomplete] (fs.js:459:17)

Hier ist mein Websocket- / Serienport-Code:

var WebSocketServer = require('../node-v0.10.29/lib/node_modules/ws').Server;
var SerialPort = require('../node-v0.10.29/bin/node_modules/serialport').SerialPort;

var serialPort;
var portName = '/dev/ttyACM0';
var sendData = "";
var wss = new WebSocketServer({port: 8080});

var CLIENTS=[];

wss.on('connection', function(ws) {
       CLIENTS.push(ws);
    ws.on('message', function(message) {
        console.log('received: %s', message);
        sendAll(message);
    });
    ws.on('close', function() {
        console.log('Client disconnected.');
    });
    ws.on('error', function() {
        console.log('ERROR');
    });
    ws.send("");
});

function sendAll(message)
{
for(var i=0;i<CLIENTS.length;i++)
    {
    CLIENTS[i].send(message);
    }
}

serialListener();

function serialListener(debug)
{
    var receivedData = "";
    serialPort = new SerialPort(portName, {
        baudrate: 9600,
         dataBits: 8,
         parity: 'none',
         stopBits: 1,
         flowControl: false
    });

    serialPort.on("open", function () {
      console.log('open serial communication');
            // Listens to incoming data
        serialPort.on('data', function(data) {
             receivedData += data.toString();
          if (receivedData .indexOf('E') >= 0 && receivedData .indexOf('B') >= 0) {
           sendData = receivedData .substring(receivedData .indexOf('B') + 1, receivedData .indexOf('E'));
           receivedData = '';
         }
         // send the incoming data to browser with websockets.
       sendAll(sendData);
      });
    });
}

Kann mir jemand helfen, herauszufinden, was hier falsch ist?

Antworten auf die Frage(3)

Ihre Antwort auf die Frage