Getting Started

Babl is a high-performance, scalable web-socket server designed for use in low-latency applications.

Built from the ground up to provide blazing fast execution speeds, and featuring a novel auto-scaling mechanism, Babl will comfortably handle high throughput, large session-count workloads without slowing down.

Using an event-driven reactive programming model, your application code is executed in an allocation-free, lock-free event-loop for maximum efficiency and mechanical sympathy.

Babl is particularly well suited to financial or crypto-currency exchanges, where clients may be connecting to APIs using their own web-socket clients and latency is a key differentiator.

Your Application

Babl is a container for your application, providing a high-performance proxy for web-socket connections.

Your application will be notified of connection lifecycle events (onConnect, onDisconnect), and receive messages (onMessage) from client connections.

Your application will publish responses to inbound messages, which will be sent back to the client.

For more information, see Application.

Using Babl

Docker

Babl is packaged in a docker container for ease of deployment. The base container is tagged as babl:0.5.0 (or babl:latest for the latest released image), and should be extended with your own container definition:

FROM babl:latest

COPY my-app/build/lib/ /babl/lib/
COPY my-app/build/config/my-app.properties /babl/config
ENV BABL_CONFIG_FILE="/babl/config/my-app.properties"
ENV JVM_RUNTIME_PARAMETERS="-Dbabl.debug.enabled=true"

The project source code contains an example docker-compose file. This can be used to connect a simple echo application, with HTML resources hosted by an nginx instance.

Standalone

Babl can also be used in a standalone manner. Simply download the -all variant of the JAR from the releases page, and execute the following:

$ java -jar /path/to/babl-all-0.5.0.jar /path/to/config.properties

Note that there is no legacy HTTP server functionality, so any HTML resources will need to be hosted using a suitable technology. For more information on configuration, see Configuration.