シンプルなNode.JSWebSocketサーバー

次に、node.jsに単純なWebSocketサーバーを記述します。このサーバーに接続すると、応答としてウェルカムメッセージが表示されます。また、いくつかの簡単なコマンドを実行できるようになります。





これを行うには、npmパッケージマネージャーを使用してNode.jsをインストールする必要があります。





プロジェクトの設定

まず、将来のプロジェクト用のディレクトリを作成する必要があります





mkdir websocket-server-node
      
      



ディレクトリに移動します





cd websocket-server-node
      
      



次に、npmを介して新しいプロジェクトを初期化する必要があります





npm init
      
      



インストーラーはいくつかの質問に答えるように求めます、あなたはそれらをスキップすることができます





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





メッセージ:PONG





たとえば、「Test!」という内容でwsSendEcho関数を呼び出すと、コンソールは次のように出力します。





メッセージ:テスト!





それで全部です!誰がそれを好きで、いいねを入れて、購読してください。すべての人に良いです!





完全なGitHubコードへのリンク








All Articles