Message transport that uses localStorage to transport messages.
SliceLocalStorageTransport constructor.
Adds storage event listener to receive data from localStorage.
const myTransport = new SliceLocalStorageTransport();
Name | Type | Description |
---|---|---|
receivers | object | List of receivers arrays, i.e. {'myAddress': [recieverFn1, recieverFn2,recieverFnN]} |
Check if transport is available.
Returns true
if transport is available and SliceMessage can be sent and received.
Returns false
if transport is unavailable.
const myTransport = new SliceLocalStorageTransport();
const myTransportIsAvailable = myTransport.isAvailable(); // true|false
Add SliceMessage receiver.
address
will be taken to filter messages.
receiver
should be a function that will be called when transport receives message with such address
, and should have 1 argument that will take received SliceMessage.
const myTransport = new SliceLocalStorageTransport();
myTransport.addReceiver('myAddress', function(message) {
// message is an instance of SliceMessage
console.log(message.name, message.data);
});
Remove SliceMessage receiver.
address
receiver address.
receiver
receiver function.
const myTransport = new SliceLocalStorageTransport();
// create and add receiver
const receiver = function(message) {
// message is an instance of SliceMessage
console.log(message.name, message.data);
};
myTransport.addReceiver('myAddress', receiver);
// and now remove
myTransport.removeReceiver('myAddress', receiver);
Check if there is receivers with such address
.
isTransport
can be set to true
if address
is transport address.
const myTransport = new SliceLocalStorageTransport();
// create and add receiver
const receiver = function(message) {
// message is an instance of SliceMessage
console.log(message.name, message.data);
};
myTransport.addReceiver('myAddress', receiver);
// check if has addresses
console.log(myTransport.hasAddress('myAddress')); // true
console.log(myTransport.hasAddress('myAddress'), true); // false
console.log(myTransport.hasAddress('notAddress')); // false
// get transport address
const transportAddress = SliceMessageTransport.getAddress('myAddress');
console.log(myTransport.hasAddress(transportAddress), true); // true
Receive SliceMessage message
and transmit it to receivers with such address
.
isTransport
can be set to true
if address
is transport address.
const myTransport = new SliceLocalStorageTransport();
// create and add receiver
const receiver = function(message) {
// message is an instance of SliceMessage
console.log(message);
};
myTransport.addReceiver('myAddress', receiver);
// create message
const myMessage = new SliceMessage('myMessageName', {
variable1: 'value1',
variable2: 'value2',
variableN: 'valueN'
});
// receive messages
myTransport.receive('myAddress', myMessage); // will log myMessage object
myTransport.receive('myAddress', myMessage, true); // do nothing as there is no such receiver
// get transport address
const transportAddress = SliceMessageTransport.getAddress('myAddress');
myTransport.receive(transportAddress, myMessage, true); // will log myMessage object
Handle localStorage storage event and transmit handled data to receive method.
This method is added automaticaly and shouldn't be used manualy, if you need to receive message use receive instead.
const myTransport = new SliceLocalStorageTransport();
window.addEventListener('storage', myTransport.handle);
Send SliceMessage message
via localStorage, address
is used to create storage variable name.
const myTransport = new SliceLocalStorageTransport();
// create message
const myMessage = new SliceMessage('message', {
variable1: 'value1',
variable2: 'value2',
variableN: 'valueN'
});
// send message
myTransport.send('receiverAddress', myMessage);
Remove current transport: cleanup receivers, etc.
const myTransport = new SliceLocalStorageTransport();
// remove
myTransport.remove();
Get transport address.
This address is the one that is used to transport SliceMessage.
const transportAddress = SliceMessageTransport.getAddress('myAddress');
Check if transport type is available.
const isAvailable = SliceMessageTransport.getAddress(); // true|false