O ganho de desempenho vem do buffer de pacotes antes de enviá-los – eventualmente enviando lotes em vez de pacotes individuais. Quanto mais tráfego for processado, melhor será a melhoria. Muitas estratégias são oferecidas como rotinas. Você pode ler mais sobre o algoritmo de buffer de pacotes aqui
Instale o pacote principal
npm install kalm
Instale a camada de transporte ('tcp' por exemplo)
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 implementações funcionais, verifique nossa pasta de exemplos.
[Leia mais]
Kalm usa a variável de ambiente NODE_DEBUG
. Basta incluir kalm
em seu valor.
Exemplo:
NODE_DEBUG=net,kalm node myApp.js
Kalm oferece eventos para rastrear quando os pacotes são processados pelas rotinas ou quando um quadro bruto é recebido.
Evento | Carga útil | Descrição |
---|---|---|
error | Erro | (servidor, cliente) Emite em caso de erros. |
ready | vazio | (servidor) Indica que o servidor agora está escutando ativamente novas conexões |
connection | Cliente | (servidor) Indica que um cliente se conectou com sucesso |
connect | Cliente | (cliente) Indica que um cliente se conectou com sucesso |
disconnect | vazio | (cliente) Indica que um cliente se desconectou |
frame | Quadro bruto | (cliente) Acionado ao receber um quadro completo analisado. |
npm test
npm run bench
Se você pensar em algo que deseja, abrir um problema ou registrar uma solicitação pull, teremos o maior prazer em dar uma olhada!
Este projeto existe graças a todas as pessoas que contribuem. [Contribuir].
Torne-se um contribuidor financeiro e ajude-nos a sustentar nossa comunidade. [Contribuir]
Apoie este projeto com sua organização. Seu logotipo aparecerá aqui com um link para seu site. [Contribuir]
Apache 2.0 (c) 2023 Frederic Charette