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¶
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 (PubSub) - Components subscribe and publish to topics and Crossbar.io takes care of delivering the events to the correct recipients.
- 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.
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.
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.
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.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.
- 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 Languagegs - WAMP client libraries by language
- Legal - Information about the code and documentation licenses