神刀安全网

Kalm – The Socket Optimizer

Kalm - The Socket Optimizer

Kalm

The Socket Optimizer

Simplify and optimize your Socket communications with:

  • Easy-to-use single syntax for all protocols
  • Configurable packet bundling (High-level Naggle’s algorithm implementation)
  • Multiplexing for all protocols
  • Ultra-flexible and extensible, load your own adapters and encoders

Compatibility

  • NODE >= 6.0.0

  • Webpack 1 || 2.1.x

Performance analysis

Requests per minute

Kalm - The Socket Optimizer

Benchmarks based on a single-thread queue test with Kalm default bundling settings

Bytes transfered

Kalm - The Socket Optimizer

Number of protocol overhead bytes saved per request

Installation

npm install kalm 

Usage

Server

var Kalm = require('kalm');      // Create a server, listening for incoming connections     var server = new Kalm.Server({       port: 6000,       adapter: 'udp',       encoder: 'json',       channels: {         messageEvent: function(data) {               // Handler - new connections will register to these events           console.log('User sent message ' + data.body);         }       }     });      // When a connection is received, send a message to all connected users     server.on('connection', function(client) {    // Handler, where client is an instance of Kalm.Client       server.broadcast('userEvent', 'A new user has connected');       });

Client

// Opens a connection to the server     var client = new Kalm.Client({       hostname: '0.0.0.0', // Server's IP       port: 6000, // Server's port       adapter: 'udp', // Server's adapter       encoder: 'json', // Server's encoder       channels: {         'userEvent': function(data) {           console.log('Server: ' + data);         }       }     });      client.send('messageEvent', {body: 'This is an object!'});      client.subscribe('someOtherEvent', function() {});

Documentation

API docs

Adapters

Encoders

Loading custom adapters

The framework is flexible enough so that you can load your own custom adapters, encoders or middlewares

// Custom adapter loading example     var Kalm = require('kalm');     var WebRTC = require('kalm-webrtc');     var msgpack = require('kalm-msgpack');      Kalm.adapters.register('webrtc', WebRTC);     Kalm.encoders.register('msg-pack', msgpack);      var server = new Kalm.Server({       port: 3000,       adapter: 'webrtc',       encoder: 'msg-pack'     });

Run tests

npm test 

Logging

Kalm usesdebug

export DEBUG=kalm 

You can also gather optimization statistics by piping kalm:stats

export DEBUG=kalm:stats myApp.js > stats.log 

Roadmap

Milestones

Presentations

转载本站任何文章请注明:转载至神刀安全网,谢谢神刀安全网 » Kalm – The Socket Optimizer

分享到:更多 ()

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址