Прирост производительности достигается за счет буферизации пакетов перед их отправкой, что в конечном итоге позволяет отправлять пакеты вместо отдельных пакетов. Чем больше трафика обрабатывается, тем лучше улучшение. Многие стратегии предлагаются в виде рутинных действий. Подробнее об алгоритме буферизации пакетов можно прочитать здесь.
Установите основной пакет
npm install kalm
Установите транспортный уровень (например, TCP)
npm install @kalm/tcp
Сервер
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' ) ;
} ) ;
Клиент
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' ) ;
} ) ;
Чтобы увидеть рабочие реализации, посетите нашу папку примеров.
[Читать далее]
Kalm использует переменную среды NODE_DEBUG
. Просто включите kalm
в свое значение.
Пример:
NODE_DEBUG=net,kalm node myApp.js
Kalm предлагает события для отслеживания обработки пакетов подпрограммами или получения необработанного кадра.
Событие | Полезная нагрузка | Описание |
---|---|---|
error | Ошибка | (сервер, клиент) Выдает при ошибках. |
ready | пустота | (сервер) Указывает, что сервер теперь активно прослушивает новые соединения. |
connection | Клиент | (сервер) Указывает, что клиент успешно подключился |
connect | Клиент | (клиент) Указывает, что клиент успешно подключился |
disconnect | пустота | (клиент) Указывает, что клиент отключился |
frame | RawFrame | (клиент) Срабатывает при получении разобранного полного кадра. |
npm test
npm run bench
Если вы придумаете что-то, что вам нужно, откроете проблему или подадите запрос на включение, мы будем более чем рады взглянуть на это!
Этот проект существует благодаря всем людям, которые вносят свой вклад. [Способствовать].
Станьте финансовым спонсором и помогите нам поддержать наше сообщество. [Способствовать]
Поддержите этот проект своей организацией. Здесь появится ваш логотип со ссылкой на ваш сайт. [Способствовать]
Apache 2.0 (c) 2023 Фредерик Шаретт