Simple Node.JS WebSocket Server

Sekarang kita akan menulis server WebSocket sederhana di node.js. Saat Anda terhubung ke server ini, Anda akan menerima pesan selamat datang sebagai tanggapan. Dan juga beberapa perintah sederhana akan tersedia untuk dieksekusi.





Untuk melakukan ini, Anda perlu menginstal Node.js dengan manajer paket npm





Penyiapan proyek

Pertama, kita perlu membuat direktori untuk proyek mendatang





mkdir websocket-server-node
      
      



Masuk ke direktori





cd websocket-server-node
      
      



Selanjutnya, Anda perlu menginisialisasi proyek baru melalui npm





npm init
      
      



Penginstal akan meminta Anda untuk menjawab beberapa pertanyaan, Anda dapat melewatinya





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





Pesan: PONG





Panggil fungsi wsSendEcho, misalnya, dengan konten "Test!", Dan konsol akan menampilkan:





Pesan: Uji!





Itu saja! Siapa yang menyukainya, taruh Suka, berlangganan. Bagus untuk semua!





Tautan ke kode GitHub lengkap








All Articles