Servidor WebSocket Node.JS simple

Ahora escribiremos un servidor WebSocket simple en node.js. Cuando se conecte a este servidor, recibir谩 un mensaje de bienvenida como respuesta. Y tambi茅n estar谩n disponibles para su ejecuci贸n un par de comandos simples.





Para hacer esto, necesita instalar Node.js con el administrador de paquetes npm, viene con





Configuraci贸n del proyecto

Primero, necesitamos crear un directorio para el proyecto futuro





mkdir websocket-server-node
      
      



Ir al directorio





cd websocket-server-node
      
      



A continuaci贸n, debe inicializar un nuevo proyecto a trav茅s de npm





npm init
      
      



El instalador le pedir谩 que responda algunas preguntas, puede omitirlas





, 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 , :





Mensaje: PONG





Llame a la funci贸n wsSendEcho, por ejemplo, con el contenido "隆Prueba!", Y la consola generar谩:





Mensaje: 隆Prueba!





隆Eso es todo! A qui茅n le gust贸, poner Me gusta, suscribirse. 隆Bien por todos!





Enlace al c贸digo completo de GitHub








All Articles