mumba-wamp

Client and utilities for connecting to a Web Application Messaging Protocol (WAMP - see http://wamp-proto.org) service.

Usage no npm install needed!

<script type="module">
  import mumbaWamp from 'https://cdn.skypack.dev/mumba-wamp';
</script>

README

Mumba WAMP

Client and utilities for connecting to a Web Application Messaging Protocol (WAMP) service.

Installation

$ npm install --save mumba-wamp

Configuration

See Autobahn connection options.

Examples

const autobahn = require('autobahn');
import {WampClient} from `mumba-wamp`;

let options = {
    url: 'ws://localhost:8080',
    realm: 'test-realm',
    authid: '*admin',
    authmethods: ['wampcra'],
    onchallenge: (session: any, method: string, extra: any) => autobahn.auth_cra.sign('*password', extra.challenge)
};

// The main test instance.
let instance = new WampClient(options);

instance.onError.subscribe(console.error);

instance.onOpen.subscribe((session: any) => {
    console.log('Connection opened:', session);
    
    instance.closeConnection();
});

instance.onClose((details: any) => {
    console.log('Connection closed:', details);
});

instance.onSubscribe.subscribe(
    (resp: any) => console.log('Subscribed:', resp.topic, resp.id)
);

instance.onRegister.subscribe(
    (result: any) => console.log('Registered:', result.procedure, result.id)
);

instance.openConnection();

Alternate initialisation path if an instance of the WampClient is needed before the connection options are known. For example a login page in a website that needs the user to enter their credentials before opening a socket connection.

import {WampClient} from 'mumba-wamp';

...

const instance = new WampClient();

instance.setOptions(options)
    .openConnection();
...

Caching.

import {WampClient} from 'mumba-wamp';
import {MemoryCache} from 'mumba-cache';

const cache = new MemoryCache({ limit: 100 });
const options = {
  url: 'ws://localhost:8080',
  realm: 'test-realm',
  authid: '*admin',
  authmethods: ['wampcra'],
  onchallenge: (session: any, method: string, extra: any) => autobahn.auth_cra.sign('*password', extra.challenge),
  
  // enable caching
  caching: {
    enabled: true,
    
    // optionally whitelist the proc's to cache
    includes: []
  }
};

const instance = new WampClient(options);

instance
  .setCache(cache)
  .openConnection();
...

API

WampSession.get

({ authid: '*admin',
  authrole: 'backend',
  authmethod: 'wampcra',
  authprovider: 'static',
  realm: 'test-realm',
  session: 1093244371,
  transport: 
   { type: 'websocket',
     protocol: 'wamp.2.json',
     peer: 'tcp4:127.0.0.1:50979',
     http_headers_received: 
      { connection: 'Upgrade',
        upgrade: 'websocket',
        host: '127.0.0.1:8080',
        'sec-websocket-version': '13',
        'sec-websocket-key': 'MTMtMTQ1MjMxODAyNzA2Mw==',
        'sec-websocket-protocol': 'wamp.2.json',
        'sec-websocket-extensions': 'permessage-deflate; client_max_window_bits' },
     http_headers_sent: {} } })

Tests

To run the test suite, first install the dependencies, then run npm test:

$ npm install
$ npm run docker:up
$ npm test
$ npm run docker:down

References

People

The original author of Mumba WAMP is Andrew Eddie.

List of all contributors

License

Apache 2.0


© 2016 Mumba Pty Ltd. All rights reserved.