Use it to send SliceMessage throught SliceMessageTransport and distribute it to its receivers, either SliceMessageBox or function.
SliceMessenger constructor
| Name | type | Description |
|---|---|---|
| id | string | Messenger id, used as address for transport. |
| transport | SliceMessageTransport | SliceMessageTransport to send and receve messages. |
If id is not provided throws Error "Can't create messenger without id."
If transport is not instance of SliceMessageTransport throws TypeError "Messenger transport should be instance of SliceMessageTransport."
// create SliceLocalStorageTransport
const transport = new SliceLocalStorageTransport();
// create SliceMessenger
const messenger = new SliceMessenger('myMessenger', transport);| Name | Type | Description |
|---|---|---|
| id | string | Messenger id, that is used as its address for SliceMessageTransport. |
| timeouts | object | List of arrays with pending messages timeouts, with message names as keys. |
| receivers | object | List of arrays with receivers, with message names as keys. |
| boxes | Array | Array of SliceMessageBox. |
| transport | SliceMessageTransport | SliceMessageTransport that is used to send and receive messages. |
Receive SliceMessage message and handle it.
- Transmit SliceMessage
messageto all SliceMessageBoxboxes - Filter receivers functions by
message.nameand transmit SliceMessagemessageto it
// create SliceLocalStorageTransport
const transport = new SliceLocalStorageTransport();
// create SliceMessenger
const messenger = new SliceMessenger('myMessenger', transport);
// add receiver
messenger.addReceiver('myMessage', function(message) {
console.log('Received: ' + message.name);
});
// create message
const message = new SliceMessage('myMessage', {
variable1: 'value1',
variable2: 'value2',
variableN: 'valueN'
});
// receive message
messenger.receive(message); // will log 'Received: myMessage'Create SliceMessage with provided name and data, and send it to an outer receivers.
timeout can be set to delay message sending, but it won't send message if there will be sent another message with same name while delay lasts.
// create SliceLocalStorageTransport
const transport = new SliceLocalStorageTransport();
// create SliceMessenger
const messenger = new SliceMessenger('myMessenger', transport);
// send message with just name
messenger.send('myMessage');
// send message with just name and data
messenger.send('myMessage', {
variable1: 'value1',
variable2: 'value2',
variableN: 'valueN'
});
// this message won't be sent
messenger.send('myDelayedMessage', { value: "this message won't be sent" }, 1000);
// this will override 'myDelayedMessage' and will be sent after 1000ms~1s
messenger.send('myDelayedMessage', { value: "send this instead" }, 1000);Create SliceMessage with provided name and data, and send it to the current messenger only.
timeout can be set to delay message sending, but it won't send message if there will be sent another message with same name while delay lasts.
// create SliceLocalStorageTransport
const transport = new SliceLocalStorageTransport();
// create SliceMessenger
const messenger = new SliceMessenger('myMessenger', transport);
// send message with just name
messenger.sendSelf('myMessage');
// send message with just name and data
messenger.sendSelf('myMessage', {
variable1: 'value1',
variable2: 'value2',
variableN: 'valueN'
});
// this message won't be sent
messenger.sendSelf('myDelayedMessage', { value: "this message won't be sent" }, 1000);
// this will override 'myDelayedMessage' and will be sent after 1000ms~1s
messenger.sendSelf('myDelayedMessage', { value: "send this instead" }, 1000);Create SliceMessage with provided name and data, and send it to the current window/frame.
timeout can be set to delay message sending, but it won't send message if there will be sent another message with same name while delay lasts.
// create SliceLocalStorageTransport
const transport = new SliceLocalStorageTransport();
// create SliceMessenger
const messenger = new SliceMessenger('myMessenger', transport);
// send message with just name
messenger.sendCurrent('myMessage');
// send message with just name and data
messenger.sendCurrent('myMessage', {
variable1: 'value1',
variable2: 'value2',
variableN: 'valueN'
});
// this message won't be sent
messenger.sendCurrent('myDelayedMessage', { value: "this message won't be sent" }, 1000);
// this will override 'myDelayedMessage' and will be sent after 1000ms~1s
messenger.sendCurrent('myDelayedMessage', { value: "send this instead" }, 1000);Create SliceMessage with provided name and data, and send it to the current window/frame and outer receivers.
timeout can be set to delay message sending, but it won't send message if there will be sent another message with same name while delay lasts.
// create SliceLocalStorageTransport
const transport = new SliceLocalStorageTransport();
// create SliceMessenger
const messenger = new SliceMessenger('myMessenger', transport);
// send message with just name
messenger.sendEveryone('myMessage');
// send message with just name and data
messenger.sendEveryone('myMessage', {
variable1: 'value1',
variable2: 'value2',
variableN: 'valueN'
});
// this message won't be sent
messenger.sendEveryone('myDelayedMessage', { value: "this message won't be sent" }, 1000);
// this will override 'myDelayedMessage' and will be sent after 1000ms~1s
messenger.sendEveryone('myDelayedMessage', { value: "send this instead" }, 1000);Add/subscribe SliceMessageBox box to current messenger.
// create SliceLocalStorageTransport
const transport = new SliceLocalStorageTransport();
// create SliceMessenger
const messenger = new SliceMessenger('myMessenger', transport);
// create SliceMessageBox
const myMessageBox = new SliceMessageBox(myMessageBoxOwner, myMessageBoxSettings);
// add messenger box
messenger.addBox(myMessageBox);Remove/unsubscribe SliceMessageBox box from current messenger.
// create SliceLocalStorageTransport
const transport = new SliceLocalStorageTransport();
// create SliceMessenger
const messenger = new SliceMessenger('myMessenger', transport);
// create SliceMessageBox
const myMessageBox = new SliceMessageBox(myMessageBoxOwner, myMessageBoxSettings);
// add messenger box
messenger.addBox(myMessageBox);
// remove messenger box
messenger.removeBox(myMessageBox);Add receiver function.
name - message name to filter SliceMessage messages that should be received by receiver.
// create SliceLocalStorageTransport
const transport = new SliceLocalStorageTransport();
// create SliceMessenger
const messenger = new SliceMessenger('myMessenger', transport);
// create SliceMessageBox
const myReceiver = function(message) {
console.log('Received: ' + message);
};
// add receiver
messenger.addReceiver('myMessage', myReceiver);Remove receiver function.
name - message name to remove receiver from.
// create SliceLocalStorageTransport
const transport = new SliceLocalStorageTransport();
// create SliceMessenger
const messenger = new SliceMessenger('myMessenger', transport);
// create SliceMessageBox
const myReceiver = function(message) {
console.log('Received: ' + message);
};
// add receiver to 'notMyMessage' messages
messenger.addReceiver('notMyMessage', myReceiver);
// add receiver to 'myMessage' messages
messenger.addReceiver('myMessage', myReceiver);
// remove receiver from 'notMyMessage'
messenger.removeReceiver('notMyMessage', myReceiver);
// in the end myReceiver will still receive 'myMessage' messages, and won't receive 'notMyMessage' messagesRemove current messenger: cleanup timeouts, stop receiving messages from transport.
// create SliceLocalStorageTransport
const transport = new SliceLocalStorageTransport();
// create SliceMessenger
const messenger = new SliceMessenger('myMessenger', transport);
// remove messenger
messenger.remove()