Socket.IO Objets sans méthode binary ou objects basés sur la classe entièrement équipés pour les mises à jour client

Supposons que j’ai un tableau de players dans mon application Node, chaque player étant un object. A chaque tick, j’envoie mon tableau à mes clients, avec Socket.IO. Je ne suis pas sûr, sur les deux méthodes suivantes, serait le moyen le plus efficace de le faire:

  1. Pour chaque player , j’ajoute un object de base à mon tableau, tel que {id:1,x:10,y:20,color:"#000000"} . Ensuite, je peux envoyer tout le tableau, brut, à mes clients. Les fonctions dont j’ai besoin ne sont pas spécifiques à un object et gèrent l’object analysé. Cette option est utilisée dans ce clone Agar.io.
  2. Pour chaque player , j’ajoute un object basé sur une classe Player , comme {id:1,x:10,y:20,color:"#000000",update:function(){//code},someOtherFunction:function(){//code}} puis créez un pseudo tableau de pseudo-objects (comme celui de l’option 1 ) à envoyer à mes joueurs à chaque tick.

S’il existe de meilleures solutions, veuillez les décrire.

Les données stockées dans votre application doivent être optimisées pour le meilleur style de codage. Cela signifie qu’il doit être lisible, maintenable, extensible, robuste, etc.

Les données envoyées via un transport doivent être optimisées pour un transport plus efficace.

L’un ne devrait pas vraiment influencer ou conduire l’autre. Si les deux priorités distinctes conduisent à des formats différents, vous devez simplement convertir l’une d’elles avant d’envoyer des données ou lors de leur réception.


Compte tenu de tout cela, je penserais que vous voudriez utiliser des principes orientés object dans votre application pour qu’un joueur puisse être un object réel avec des méthodes.

Ensuite, lorsque vous souhaitez envoyer des données sur le réseau, il vous suffit d’extraire toutes les données que vous souhaitez envoyer, de les formater en quelque chose de efficace pour le transport et de les envoyer. Le récepteur parsingra ensuite les données et les insérera dans un object.