Peningkatan kinerja berasal dari buffering paket sebelum mengirimnya- yang pada akhirnya mengirimkan paket secara batch, bukan paket individual. Semakin banyak lalu lintas yang diproses, semakin baik peningkatannya. Banyak strategi yang ditawarkan sebagai rutinitas. Anda dapat membaca lebih lanjut tentang algoritma buffering paket di sini
Instal paket inti
npm install kalm
Instal lapisan transport ('tcp' misalnya)
npm install @kalm/tcp
pelayan
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' ) ;
} ) ;
Klien
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' ) ;
} ) ;
Untuk melihat implementasi yang berfungsi, lihat folder contoh kami.
[Baca selengkapnya]
Kalm menggunakan variabel lingkungan NODE_DEBUG
. Sertakan saja kalm
dalam nilai Anda.
Contoh:
NODE_DEBUG=net,kalm node myApp.js
Kalm menawarkan event untuk melacak kapan paket diproses secara rutin atau kapan frame mentah diterima.
Peristiwa | Muatan | Keterangan |
---|---|---|
error | Kesalahan | (server, klien) Memancarkan kesalahan. |
ready | ruang kosong | (server) Menunjukkan bahwa server sekarang aktif mendengarkan koneksi baru |
connection | Klien | (server) Menunjukkan bahwa klien telah berhasil terhubung |
connect | Klien | (klien) Menunjukkan bahwa klien telah berhasil terhubung |
disconnect | ruang kosong | (klien) Menunjukkan bahwa klien telah terputus |
frame | Bingkai Mentah | (klien) Dipicu ketika menerima full frame yang diurai. |
npm test
npm run bench
Jika Anda memikirkan sesuatu yang Anda inginkan, membuka terbitan, atau mengajukan permintaan penarikan, kami akan dengan senang hati melihatnya!
Proyek ini ada berkat semua orang yang berkontribusi. [Menyumbang].
Menjadi kontributor keuangan dan membantu kami mempertahankan komunitas kami. [Menyumbang]
Dukung proyek ini dengan organisasi Anda. Logo Anda akan muncul di sini dengan tautan ke situs web Anda. [Menyumbang]
Apache 2.0 (c) 2023 Frederic Charette