Writing a MMORPG server in nodejs, I have to handle packets. These packets have a structure of <length> <id> <data>So what I did was use a node package called packetAnd first get the packet id:client.on('data', function(data) {  parser.extract(l16 => length, l16 => id, function (packet) {    if (packet.id === 300) {    }    if (packet.id === 301) {    }    if (packet.id === 302) {    }    if (packet.id === 303) {    }  });  // parse the packet id to handle it accordingly  parser.parse(data);});There are packet Id's upto 1000+ which would make my if statements very long. But each packet id contains different data and different ways to handle it.For example packet 300 which is the handshake packet. It sends the client version to the server and the servers checks it and returns if it is correct or not, if not then client will error wrong version.  if (packet.id === 300) {    console.log('[recieved] packet:handshake');    parser.extract(handshake, function (packet) {      if (packet.gameClientVer === config.gameClientVer) {        // do stuff      } else {        // do stuff       }    });    // parse structure for packet 300    parser.parse(data);  }});the handshake packet is defined as:serializer.packet(handshake, l16 => length, l16 => id, l16 => gameClientVer, l16 => gameUpdateVer, l16 => gameDateVer);My question is, how can I improve this?
Handling packets in nodejs for MMORPG
javascript;node.js
I would have a function per packet.id:function handleHandShake(packet, data){  //Do not use console.log for mmorpg's, write to a text file if you must  //console.log('[recieved] packet:handshake');  parser.extract(handshake, function (packet) {    if (packet.gameClientVer === config.gameClientVer) {      // do stuff    } else {      // do stuff     }  });  //parse structure for packet 300  parser.parse(data);}I would go for a packet.id based routing table:var routes = [  '300' : handleHandShake,  '301' : addExperience,  etc. etc.]Then, you can extract the packet.id and execute the proper functionclient.on('data', function(data) {  parser.extract(l16 => length, l16 => id, function (packet) {    if( routes[packet.id] ){      routes[packet.id](packet, data);    } else {      //Do something ( logging? ) if we get unknown packet id's    }  });  // parse the packet id to handle it accordingly  parser.parse(data);});It was fun learning about the package module, great question.