/bus

A Generic JavaScript bus for iFrames. used for Syr multi tenant applications

Primary LanguageJavaScript

dragons

this node module is fresh poc.

description

used for multi-tenant environments in syr core

usage

A hypervisor or server is needed. Our example the server is the main webpage host, it's job is to host iFrames.

A simple example is like so :

import { Server } from '@syr/bus';

// this file loaded in a webpage
let server = new Server();

// load app1 when served from other webpack server
// npm run serve-app
server.loadApp('http://localhost:8888');

// load app2
// np run serve-app-two
server.loadApp('http://localhost:8889');

Clients can then interact with each other.

A client registers itself on the bus first.

import { Client } from '@syr/bus';

// create a new client, with an endpoint
let client = new Client('com.derek.mathApp');

A client can then register endPoint names

// register a method for this app
client.fn('square', ({ num }) => {
  return num * num;
});

That's it!

Another client can now digest those exported methods across the bus.

callback pattern

// message another client's endpoint, pass arguments
// recieve a return value
client.message(
  'syr://com.derek.mathApp/square',
  {
    num: 2,
  },
  result => {
    console.log(`Squared Valued Is: ${result}`);
  }
);

promise pattern

client.message('syr://com.derek.mathApp/square', {
  num: 4,
}).then(result => {
  console.log(`Squared Valued Is: ${result}`);
});

example , three apps running visible in a web browser

syrbus