Skip to main content

Kanalo Overview

Kanalo is a bi-directional real-time communication service that solves the challenges of building and scaling real-time applications. With Kanalo, you can start building real-time apps with just some configuration and a WebSocket.

How it works

Kanalo Diagram

As seen in the image above, Kanalo has two sides:

  • On the frontend side, any application can connect to Kanalo using the WebSocket protocol, which provides a persistent bi-directional data channel. This allows the application to send and receive real-time data. Every time one of these applications sends data over the WebSocket, Kanalo registers an event (more on those below).
  • On the backend side, Kanalo can send data to backend services (servers or serverless functions hosted in the cloud) using HTTPS. These services can send data or commands back to Kanalo, either in response to a message or by calling the API. Not every use-case will need this side of Kanalo.

Events

There are three events that can be triggered inside Kanalo by actions on the WebSocket side:

  • CONNECT events occur when a client application establishes a WebSocket connection to Kanalo.
  • MESSAGE events occur when a client application sends data to Kanalo using the WebSocket.
  • DISCONNECT events occur when the WebSocket connection is closed.

You configure how Kanalo behaves in response to these events by writing a configuration file. This behaviour might include routing the data to one or more connected WebSockets or to a backend service, or managing the connection's tags (a system to address sockets in groups) using Pipelines. Multiple operations can be done at once, and Kanalo can determine which to execute based on rules that you have defined.

If the data is sent to a backend service via HTTPS (known as Functions), that service can respond with one or more commands that allow it to send data back to sockets, or manage their tags and lifecycle. To do this without first receiving a message from Kanalo, the service can use the messaging API instead.

Currently only string data is supported, but we aim to provide binary data support in the future.

Advantages

Kanalo's architecture provides several benefits over traditional real-time services:

  1. Less client responsibility: With traditional Pub/Sub, the client takes on a lot of responsibility by needing to know exactly where they want to send data to and receive data from. It also forces servers to function like a client does, connecting and receiving data using the same system. With Kanalo, clients simply connect to a websocket; routing is controlled in system and/or on the backend, simplifying architecture and improving security. If a Pub/Sub system is still preferred, it only takes a few lines of config to make Kanalo into one, and you get to keep all the other benefits.
  2. Stronger authentication: Let only people or devices that are allowed to connect open sockets by leveraging modern authentication using JWTs and OAuth. Kanalo fits seamlessly into your existing authentication process.
  3. Cloud native hosted service: Kanalo was designed from the ground up to be a cloud platform, and integrate seamlessly with microservice/serverless architectures, an impossibility with traditional Pub/Sub that requires servers connected over a socket (see 1.). A hosted service removes the many challenges around real-time server scaling and balancing, lowering engineering complexity and therefore cost.
  4. API-free response: With traditional Pub/Sub, sending messages from the server is done with an API call. This slows down the process with an entirely new HTTPS dispatch. In Kanalo, backends can use the existing HTTPS response to send data or issue lifecycle commands. Kanalo does have a messaging API as well, but it is recommended to only use it for asynchronous or server-initiated tasks.
  5. Dynamic in-system routing: Kanalo Pipelines and Tags allow messages to be routed dynamically in-system, making any routing topology possible and easy with a few lines of config.

In short, Kanalo makes it easier, cheaper, and faster to build and maintain real-time applications, and makes those applications faster, more secure, and more scalable.

Overview Video

caution

The video uses an older version of the Kanalo system, so you shouldn't try and pull code from it.

The following video gives a short overview of Kanalo.