About > What is Crossbar.io

What is Crossbar.io

What can Crossbar.io be used for, and what does it do?

Crossbar.io is a WAMP router

Crossbar.io is is a router for the open WAMP protocol, and it is open source. Together with the open source WAMP client libraries it is a connection fabric for components in distributed applications.

Crossbar.io connects an application with a temperature sensor, backend, alarm lamp, mobile frontend and a fan

Components can e.g. be a Web page/Web app frontend, a classic application backend running on a server, an individual microservice, a mobile client, or an IoT device.

Whatever they are, all components connect to Crossbar.io and Crossbar.io enables them to communicate with each other as equals.

The WAMP protocol provides two communication patterns for this:

  • Publish and Subscribe - Components subscribe and publish to topics and Crossbar.io takes care of delivering the events to the correct recipients.

sequence of clients subscribing, a client publishing, the event being distributed to the subscribers

  • routed Remote Procedure Calls (rRPC) - A component registers a procedure with Crossbar.io, and any other component can call this with Crossbar.io routing both the call and the result.

sequence of a client registering a procedure, another client calling it, and Crossbar.io routing the call and its result

Both these patterns allow for decoupling of components (no knowledge about the identity of the subscribers to a publication's topic or components implementing a called procedure) and scale well.

There are WAMP client implementations for (currently) 12 languages, and you can combine components written in different languages in an application. With WAMP covering the necessary communication patterns you are free to move functionality where it most makes sense within the context of your application.

Crossbar.io can handle hundreds of thousands of concurrent connections, and route tens of thousands of messages per second.

dense network of connections

WAMP is easy to get started in, but provides many advanced features, e.g. simple load balancing across components through shared registrations, black and whitelisting of recipients of events and a range of authentication mechanisms. You also get a meta-API which provides information about connections, subscriptions and registrations and allows to manage these from within your application.

Crossbar.io can do more for you

On top of the pure WAMP routing, Crossbar.io provides a large toolset for application development. The motto here is to enable, not to require. We provide you with tools and you are free to choose those which fit your needs and combine them with your own.

We provide a range of authentication mechanisms to make sure that only the right components can connect.

There are fine-grained permissions to take care of authorization of actions within the application. You can allow everything to everybody at the start of development and then be as detailed as you need with permissions once your application structure becomes clear.

branches with locks interspersed

If you have more specific needs than what we cover, you can use dynamic authenticators and authorizers that you write (in any language with WAMP support), giving you full control and the possibility to easily integrate with existing systems.

REST APIs are everywhere on the Web, and Crossbar.io contains Rest brige services which enable you to communicate with these from your WAMP applciation components. You can benefit from the features of WAMP within your application, but easily connect to the wider Web out there.

Most applications today contain a Web front-end. Crossbar.io has a static Web server so that you can serve the files for this.

Modern machines are powerful enough to run Crossbar.io and multiple application components - and Crossbar.io can manage the start of these components for you.

This, combined with the static Web server, means that spinning up your entire multi-component application may be as easy as doing crossbar start.

Summary

Crossbar.io together with the WAMP client libraries enables you to connect your components in distributed applications as equals. This works across languages and devices.

Crossbar.io provides you with the tools to handle a wide set of standard aspects of distributed applications (e.g. authentication and authorization) while giving you the freedom to choose your own solutions.

Further Reading

  • Basic Concepts - explains the WAMP concepts, Crossbar.io structure and configuration necessary to start using Crossbar.io (read this before diving in elsewhere)
  • Features - overview of Crossbar.io features
  • Supported Languages - WAMP client libraries by language
  • FAQ
  • Legal - Information about the code and documentation licenses
Test
remote management for
Crossbar.io
Test remote management for Crossbar.io
Community Chat