Einfacher Node.JS WebSocket Server

Jetzt schreiben wir einen einfachen WebSocket-Server in node.js. Wenn Sie eine Verbindung zu diesem Server herstellen, erhalten Sie als Antwort eine Willkommensnachricht. Außerdem stehen einige einfache Befehle zur Ausführung zur Verfügung.





Dazu müssen Sie Node.js mit dem mitgelieferten npm-Paketmanager installieren





Projektaufbau

Zuerst müssen wir ein Verzeichnis für das zukünftige Projekt erstellen





mkdir websocket-server-node
      
      



Gehen Sie in das Verzeichnis





cd websocket-server-node
      
      



Als nächstes müssen Sie ein neues Projekt über npm initialisieren





npm init
      
      



Das Installationsprogramm fordert Sie auf, einige Fragen zu beantworten. Sie können diese überspringen





, WS UTF-8





npm install ws
      
      



npm install --save-optional utf-8-validate
      
      



websocket-

. server.js, . , GitHub.





server.js:

websocket





const WebSocket = require('ws');
      
      



, , WebSocket, WebSocket-.





const wsServer = new WebSocket.Server({port: 9000});
      
      



HTTP-, WebSocket- . HTTP- , WebSocket- , .





, onConnect.





wsServer.on('connection', onConnect);
      
      



onConnection ws-, .





onConnect , wsClient. wsClient: message close.





message - .





close - .





onConnect, .





onConnect:





function onConnect(wsClient) {
  console.log(' ');
  //    
  wsClient.send('');
wsClient.on('message', function(message) {
    /*     */
  }
wsClient.on('close', function() {
    //    
    console.log(' ');
  }
}
      
      



close .





. , JSON-. JSON , .





JSON :





{
  action: 'ECHO' | 'PING',
  data?: string //  
}
      
      



, :





  • echo-, data





  • ping, pong





  • , " "





:





try {
  //   ,    JSON-
  const jsonMessage = JSON.parse(message);
  switch (jsonMessage) {
    case 'ECHO':
      wsClient.send(jsonMessage.data);
      break;
    case: 'PING':
      setTimeout(function() {
        wsClient.send('PONG');
      }, 2000);
      break;
    default:
      console.log(' ');
      break;
  }
} catch (error) {
  console.log('', error);
}
      
      



, PING , 2 .





server.js , , .





console.log('   9000 ');
      
      



:





node server.js
      
      



ws://localhost:9000. :





  • Windows Linux (Ctrl + C)





  • MacOs (Cmd + C)





,





Window:





ipconfig
      
      



Linux MacOS:





ifconfig
      
      



192.168.0.15, ws://192.168.0.15:9000.





, F12. DevTools, :





const myWs = new WebSocket('ws://localhost:9000');
//       
myWs.onopen = function () {
  console.log('');
};
//    
myWs.onmessage = function (message) {
  console.log('Message: %s', message.data);
};
//    echo-  
function wsSendEcho(value) {
  myWs.send(JSON.stringify({action: 'ECHO', data: value.toString()}));
}
//     ping  
function wsSendPing() {
  myWs.send(JSON.stringify({action: 'PING'}));
}
      
      



. wsSendPing:





wsSendPing()
      
      



2 , :





Nachricht: PONG





Rufen Sie beispielsweise die Funktion wsSendEcho mit dem Inhalt "Test!" Auf, und die Konsole gibt Folgendes aus:





Nachricht: Test!





Das ist alles! Wer es mochte, legte wie, abonnieren. Gut zu allen!





Link zum vollständigen GitHub-Code








All Articles