Skip to content

TypeScript fork/port of the original autobahnJS library

License

Notifications You must be signed in to change notification settings

michaelbaer/autobahn-ts

 
 

Repository files navigation

build status

IMPORTANT NOTE

This is an experimental TypeScript port of the original AutobahnJS library. This port is currently in experimental stage and done for educational purposes. DO NOT USE IN PRODUCTION!

Original README.md from autobahn-js follows:


Autobahn|JS

Autobahn|JS is a subproject of the Autobahn project and provides an open-source implementation of the Web Application Messaging Protocol V2 in JavaScript

It is licensed under the MIT licensed.

WAMP provides asynchronous Remote Procedure Calls and Publish & Subscribe for applications in one protocol running over WebSocket (and fallback transports for old browsers).

Autobahn|JS runs on both Web browsers and Node.js.

WAMP enables application architectures with application code distributed freely across processes and devices according to functional aspects. Since WAMP implementations exist for multiple languages, WAMP applications can be polyglott. Application components can be implemented in a language and run on a device which best fit the particular use case.

Show me some code

The following example implements all four roles that Autobahn|JS offers

  • Publisher
  • Subscriber
  • Caller (calls a remote procedure)
  • Callee (offers a remote procedure)

The code runs unaltered in the browser or Node.js!

var autobahn = require('autobahn');

var connection = new autobahn.Connection({url: 'ws://127.0.0.1:9000/', realm: 'realm1'});

connection.onopen = function (session) {

   // 1) subscribe to a topic
   function onevent(args) {
      console.log("Event:", args[0]);
   }
   session.subscribe('com.myapp.hello', onevent);

   // 2) publish an event
   session.publish('com.myapp.hello', ['Hello, world!']);

   // 3) register a procedure for remoting
   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 (res) {
         console.log("Result:", res);
      }
   );
};

connection.open();

Get it

Browser Development

The latest release of AutobahnJS can be downloaded from here:

Previous releases are available under respective links containing the version number:

A complete history of AutobahnJS releases is also available from the built repository.

The latter can also be used with Bower:

bower install autobahn

NodeJS Development

AutobahnJS is available via the Node package manager here. To install:

npm install autobahn

More information

For more information, take a look at the project documentation. This provides:

Get in touch

Get in touch on IRC #autobahn on chat.freenode.net or the mailing list.

Acknowledgements

Autobahn|JS includes code from the following open-source projects

Special thanks to the Coders with an Unhealthy Javascript Obsession for creating when.js - A lightweight Promise and when() implementation, plus other async goodies.

About

TypeScript fork/port of the original autobahnJS library

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • JavaScript 77.3%
  • TypeScript 20.9%
  • Other 1.8%