https://crossbar.io/ [cb_logo_fu] menu * Home * About arrow_drop_down + Features + Supported Languages + FAQ + Contributing + Legal * Documentation arrow_drop_down + + Getting Started + Installation + Administration + Programming Guide + TOC * Client Libraries arrow_drop_down + Autobahn Overview + Autobahn for Python external link + Autobahn for JavaScript external link + Autobahn for C++ external link + Autobahn for Java external link + all supported languages * Demos external link * Blog external link * Crossbar.io Fabric external link * Home * About arrow_drop_down + Features + Supported Languages + FAQ + Contributing + Legal * Documentation arrow_drop_down + + Getting Started + Installation + Administration + Programming Guide + TOC * Client Libraries arrow_drop_down + Autobahn Overview + Autobahn for Python external link + Autobahn for JavaScript external link + Autobahn for C++ external link + Autobahn for Java external link + all supported languages * Demos external link * Blog external link * Crossbar.io Fabric external link [crossbar_i] Networking for apps docker pull crossbario/crossbar Crossbar.io is an open source networking platform for distributed and microservice applications. It implements the open Web Application Messaging Protocol (WAMP), is feature rich, scalable, robust and secure. Let Crossbar.io take care of the hard parts of messaging so you can focus on your app's features. Get Started +++ Crossbar.io Fabric alpha launched: Remote Management & Monitoring +++ TEST ME Powering the Internet-of-Things P Crossbar.io is powering Internet-of-things applications. Here is an illustration of how Crossbar.io connects devices, systems and people: embed(static/img/crossbar_p1V1_08.svg) [fullscreen] Steps * 00. Clients connect to Crossbar.io * 01. Clients subscribe to "temperature" * 02. Fan registers "start/stop fan" * 03. Motor temperature rises. * 04. Sensor publishes "temperature" * 05. "temperature" event dispatched * 06. Backend calls "start/stop fan" * 07. "start/stop fan" invoked * 08. Motor temperature falls. * 09. Sensor publishes "temperature" * 10. "temperature" event dispatched * 11. Backend calls "start/stop fan" * 12. "start/stop fan" invoked [control-pl] [control-pa] [control-sk] [control-st] Networking for Apps & Devices With Crossbar.io you can create distributed, multi-language applications where components communicate using Publish & Subscribe and routed Remote Procedure Calls. [carousel_p] Multi-language Applications WAMP client libraries are available for 15 languages enabling you to connect anything to Crossbar.io. With Crossbar.io, you can mix components written in different languages within the same application. Choose the right tool for the job at a component level instead of for your entire project. [pubsub_pub] Publish & Subscribe With the Publish & Subscribe pattern, application components subscribe to topics to get notified when other components publish to these topics. A component publishes data on a topic to Crossbar.io, and the router dispatches events to all components which are presently subscribed to the topic. Using the Publish & Subscribe pattern allows your application components to distribute information to other components in real-time. [rpc_call] routed Remote Procedure Calls With the routed Remote Procedure Call pattern, any component can register a procedure that any other component can call. Crossbar.io routes calls to the component that registered the respective procedure and returns the result to the caller. The Remote Procedure Call pattern can be used as a secure command & control channel, regardless where the called component resides. * chevron_left * * * * chevron_right See what application components look like! Show Me Some Code Here's what a basic application component looks like when using one of the Autobahn WAMP libraries. * JavaScript * Python * C++ // 1) SUBSCRIBE to a topic to receive events function onhello(args) { console.log("Got event:", args[0]); } session.subscribe('com.myapp.hello', onhello); // 2) PUBLISH an event session.publish('com.myapp.hello', ['Hello, world!']); // 3) REGISTER a procedure for remote calling function add2(args) { return args[0] + args[1]; } session.register('com.myapp.add2', add2); // 4) CALL a remote procedure session.call('com.myapp.add2', [2, 3]).then( function (result) { console.log("Got result:", result); } ); # 1) SUBSCRIBE to a topic to receive events def onhello(msg): print("Got event: {}".format(msg)) session.subscribe(onhello, 'com.myapp.hello') # 2) PUBLISH an event session.publish('com.myapp.hello', 'Hello, world!') # 3) REGISTER a procedure for remote calling def add2(x, y): return x + y session.register(add2, 'com.myapp.add2'); # 4) CALL a remote procedure result = yield from session.call('com.myapp.add2', 2, 3) print("Got result: {}".format(result)) // 1) SUBSCRIBE to a topic to receive events void onhello(const anyvec& args, const anymap& kwargs) { cout << "Got event: " << any_cast(args[0]) << endl; } session.subscribe("com.myapp.hello", &onhello); // 2) PUBLISH an event session.publish("com.myapp.hello", {string("Hello, world!")}); // 3) REGISTER a procedure for remote calling any add2(const anyvec& args, const anymap& kwargs) { return any_cast(args[0]) + any_cast(args[1]); } session.provide("com.myapp.add2", &add2); // 4) CALL a remote procedure session.call("com.mathservice.add2", {2, 3}).then( [&](future f) { cout << "Got result: " << any_cast (f.get()) << endl; } ); Security is Key We believe that security is of prime importance. We also know that security is a process, not an outcome. We think about security every step of the way, from protocol and software design to making fast deployment of bugfixes possible. crop Attack Surface Minimization There are no open ports on end devices, but on the Crossbar.io router. Securing, defending and updating this is much easier than for potentially millions of devices. perm_identity Secure Authentication Crossbar.io has multiple authentication mechanisms to suit your needs, including authentication via elliptic curve keys - as well as the possibility to use your own dynamic authentication component. line_style Fine-Grained Authorization There is fine-grained authorization of clients at the level of individual client actions - as well as the possibility to use your own dynamic authorization component. autorenew Up-To-Date Components We only use up-to-date cryptography, remove broken ciphers from the default configuration and keep our project dependencies current. healing Fast Fixes, Fast Releases Fixes of security-related issues have absolute priority. Out tooling allows for very quick releases, so that fixes arrive quickly to our users. vpn_key End-to-End Payload Encryption End-to-end payload encryption can protect your application data even against a compromised router. (alpha status) Fast and Scalable P The cursors in the areas below are synchronized via a Crossbar.io instance running in the cloud: Crossbar.io icon Crossbar.io icon Crossbar.io icon Status: not connected. Depending on the hardware, a single Crossbar.io instance * can hold hundreds of thousands of concurrent WAMP connections * can handle tens of thousands of messages/second Multiprotocol & Open Standards Crossbar.io uses open standards. It's core is the powerful open WAMP protocol, which takes care of all the connection needs between your application components. For interactions with existing services and components, currently two other open standards are supported: crossbar.io router connects several WAMP components, a REST endpoint and a MQTT client REST bridging Configure mappings between REST messages and WAMP messages. Covers all four WAMP interactions: * Call REST services via WAMP, * trigger procedures on WAMP clients via REST calls, * publish based on REST calls and * send REST calls based on events. MQTT broker Full MQTT broker as a replacement for your existing broker. Automatic mapping of MQTT to WAMP topics. WAMP publishes are received by MQTT subscribers and vice versa. Open Source Ecosystem Everything you need for an application connected with Crossbar.io is open and freely accessible. There is an ecosystem of open-source software around the WAMP protocol. This means being able to choose the right solution for your use case, no vendor lock in and the possibility to fix and extend things yourself. [open_route] Open-Source Router * Crossbar.io is released under the AGPL v3. It can be used for commercial projects, since the router license does not affect any WAMP or other clients. * Crossbar.io is the most feature-rich and best tested WAMP router, but there may be use cases where another implementation best serves you. * There are currently at least 13 WAMP router implementations. [open_clien] Open-Source Clients * There are currently at least 27 WAMP client implementations across 15 programming languages. * The Crossbar.io project provides three of these (the Autobahn librariess), for Python, JavaScript (browser and NodeJS) and C++. * The Autobahn library licenses, as well as those of most other client implementations, allow the use in commercial projects. [open_proto] Open Protocol * The WAMP specification is open and liberally licensed. * Anybody is free to implement the protocol. * Development of the protocol is community driven (via the mailing list and GitHub issues). * You can participate, e.g. with suggestions if you have a use case which is presently not covered. * chevron_left * * * * chevron_right Interested? It's easy to Get Started Crossbar.io Crossbar.io is an open-source project started by Crossbar.io GmbH. We have a growing user community and active community contributions. Our mission is to take middleware to the next-level - the IoT. About * Crossbar.io (company) external link * Blog external link Connect * GitHub * Mailing List * Twitter Resources * Getting Started * Documentation * Autobahn Libraries Made by Crossbar.io: copyright & trademarks * privacy & cookie policy * terms of use * impressum Community Support Forums