La ganancia de rendimiento proviene del almacenamiento en búfer de los paquetes antes de enviarlos; eventualmente, se envían lotes en lugar de paquetes individuales. Cuanto más tráfico se procese, mejor será la mejora. Muchas estrategias se ofrecen como rutinas. Puede leer más sobre el algoritmo de almacenamiento en búfer de paquetes aquí
Instalar el paquete principal
npm install kalm
Instalar la capa de transporte ('tcp' por ejemplo)
npm install @kalm/tcp
Servidor
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' ) ;
} ) ;
Cliente
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' ) ;
} ) ;
Para ver implementaciones funcionales, consulte nuestra carpeta de ejemplos.
[Leer más]
Kalm usa la variable de entorno NODE_DEBUG
. Simplemente incluya kalm
en su valor.
Ejemplo:
NODE_DEBUG=net,kalm node myApp.js
Kalm ofrece eventos para rastrear cuándo los paquetes son procesados por rutinas o cuándo se recibe una trama sin formato.
Evento | Carga útil | Descripción |
---|---|---|
error | Error | (servidor, cliente) Emite errores. |
ready | vacío | (servidor) Indica que el servidor ahora está escuchando activamente nuevas conexiones |
connection | Cliente | (servidor) Indica que un cliente se ha conectado exitosamente |
connect | Cliente | (cliente) Indica que un cliente se ha conectado exitosamente |
disconnect | vacío | (cliente) Indica que un cliente se ha desconectado |
frame | Marco sin procesar | (cliente) Se activa al recibir un fotograma completo analizado. |
npm test
npm run bench
Si piensa en algo que desea, abre un problema o presenta una solicitud de extracción, ¡estaremos encantados de echarle un vistazo!
Este proyecto existe gracias a todas las personas que contribuyen. [Contribuir].
Conviértase en un contribuyente financiero y ayúdenos a sostener nuestra comunidad. [Contribuir]
Apoye este proyecto con su organización. Su logotipo aparecerá aquí con un enlace a su sitio web. [Contribuir]
Apache 2.0 (c) 2023 Frédéric Charette