How to use
var io = require('socket.io')(3000);var kafka = require('socket.io-kafka');io.adapter(kafka('localhost:2181'));
By running socket.io with
socket.io-kafka you can scale
your socket.io app horizontally using multiple ports or servers.
Kafka is a very fast, scalable, distributed message bus and was designed to handle a huge amount of data with low latency. It was originally developed by LinkedIn and is currently part of the Apache Project.
As Kafka provides built-in partitioning, replication, and fault-tolerance, it feels like a natural choice to build scalable socket.io applications with high throughput or which will require a great number of instances talking amongst themselves.
uri is a zookeper connection string like
localhost:2821 where your
zookeeper cluster is located.
The adapater uses the kafka-node
and accepts a comma separated
host:port pairs, each represents a zookeeper
For a list of options see below.
The following options are allowed:
key: the name of the key prefix the kafka topic (
host: zookeeper host
port: zookeeper port
uri: substitute for
port, zookeeper connection string
consumer: optional, a kafka.Consumer instance
producer: optional, a kafka.Producer instance
createTopics: optional, if we should try to create a new Kafka topic (
partition: partition to read and write to (
npm test will run
istanbul code coverage. The command expects
the modules to be installed as global.
- add CI (crrently code is linted, tested and coverage is above 85%)
- read from multiple partitions
- allow configuration to set consumer options
- allow configuration to set compression (currently snappy is hardcoded)
- benchmark (find out real world limits)