Le gain de performances provient de la mise en mémoire tampon des paquets avant de les envoyer, en envoyant éventuellement des lots au lieu de packages individuels. Plus le trafic est traité, meilleure est l’amélioration. De nombreuses stratégies sont proposées sous forme de routines. Vous pouvez en savoir plus sur l'algorithme de mise en mémoire tampon des paquets ici
Installer le package de base
npm install kalm
Installer la couche transport ('tcp' par exemple)
npm install @kalm/tcp
Serveur
const kalm = require ( 'kalm' ) ;
const ws = require ( '@kalm/ws' ) ;
const server = kalm . listen ( {
port : 8800 ,
transport : ws ( ) ,
routine : kalm . routines . tick ( { hz : 5 } ) , // Sends packets at a frequency of 5 Hz (200ms)
host : '0.0.0.0' ,
} ) ;
server . on ( 'connection' , ( client ) => {
client . subscribe ( 'my-channel' , ( body , frame ) => {
// Handle messages here
} ) ;
server . broadcast ( 'my-other-channel' , 'some message' ) ;
} ) ;
Client
const kalm = require ( 'kalm' ) ;
const ws = require ( '@kalm/ws' ) ;
const client = kalm . connect ( {
host : '0.0.0.0' ,
port : 8800 ,
transport : ws ( ) ,
routine : kalm . routines . realtime ( ) ,
} ) ;
client . on ( 'connect' , ( ) => {
client . subscribe ( 'my-other-channel' , ( body , frame ) => {
// Handle messages here
} ) ;
client . write ( 'my-channel' , 'hello world' ) ;
} ) ;
Pour voir des implémentations fonctionnelles, consultez notre dossier d’exemples.
[En savoir plus]
Kalm utilise la variable d'environnement NODE_DEBUG
. Incluez simplement kalm
dans votre valeur.
Exemple:
NODE_DEBUG=net,kalm node myApp.js
Kalm propose des événements pour suivre le moment où les paquets sont traités par des routines ou lorsqu'une trame brute est reçue.
Événement | Charge utile | Description |
---|---|---|
error | Erreur | (serveur, client) Émet des erreurs. |
ready | vide | (serveur) Indique que le serveur écoute désormais activement les nouvelles connexions |
connection | Client | (serveur) Indique qu'un client s'est connecté avec succès |
connect | Client | (client) Indique qu'un client s'est connecté avec succès |
disconnect | vide | (client) Indique qu'un client s'est déconnecté |
frame | Cadre brut | (client) Déclenché lors de la réception d’une image complète analysée. |
npm test
npm run bench
Si vous pensez à quelque chose que vous souhaitez, ouvrez un ticket ou déposez une pull request, nous serons plus qu'heureux d'y jeter un œil !
Ce projet existe grâce à toutes les personnes qui y contribuent. [Contribuer].
Devenez un contributeur financier et aidez-nous à pérenniser notre communauté. [Contribuer]
Soutenez ce projet avec votre organisation. Votre logo apparaîtra ici avec un lien vers votre site Web. [Contribuer]
Apache 2.0 (c) 2023 Frédéric Charette