0.1.5 • Published 4 years ago
smart-web-messenger v0.1.5
SMART Web Messenger
Installation
npm install smart-web-messenger --save
Create a listener on a parent frame
Create listener
import SmartMessenger from 'smart-web-messenger'
const messenger = new SmartMessenger()
const appUrls = ['localhost', '*.example.org', ...] // Domains that are allowed
const {
observable,
id
} = messenger.createListener(appURLs)
Subscribe to messages
const subscription = observable.subscribe((response) => {
const [type, action] = response.messageType.split('.')
const result = {}
if (type === 'scratchpad') {
if (action === 'add') {
result.status = '201 OK'
result.location = `[ResourceType]/[ResourceId]`
result.outcome = [ResourcePayload]
// Perform any other scratchpad.add tasks
}
if (action === 'update') {
result.status = '200 OK'
result.location = `[ResourceType]/[ResourceId]`
result.outcome = [ResourcePayload]
// Perform any other scratchpad.update tasks
}
if (action === 'delete') {
result.status = '204 OK'
result.location = `[ResourceType]/[ResourceId]`
result.outcome = [ResourcePayload]
// Perform any other scratchpad.update tasks
}
}
if (launchedAppData.launchUrl) {
const iframeEl = document.getElementById(launchedAppData.launchUrl)
if (iframeEl) {
messenger.sendSpecificFrame(iframeEl, {
messageId: messenger.generateId(),
responseToMessageId: response.messageId,
payload: result
})
}
}
})
Send messages from child frame (iframe)
import SmartMessenger from 'smart-web-messenger'
// SMART Message payload
const payload = {
resource: {
resourceType: "[ResourceType]",
...
}
}
const messenger = new SmartMessenger()
// Send SMART message with default timeout before being rejected
messenger.smartSend( `scratchpad.[add|update|delete]}` , payload)
.then((res) => {
// res = { status: "201|200|204 OK" }
// Do something with the response
...
});
// Send SMART message with an explicit timeout before being rejected
messenger.smartSend( `scratchpad.[add|update|delete]}` , payload, 500)
.then((res) => {
// res = { status: "201|200|204 OK" }
// Do something with the response
...
});
Setup message default timout
Construct messenger with default timeout value (=1000ms)
const messenger = new SmartMessenger();
Construct with custom default timeout
const messenger = new SmartMessenger({ timeout: 2000 })
Change default timeout value
const messenger = new SmartMessenger()
messenger.setDefaultTimeout(3000)
Building
Install dependencies
npm install
Run the build command
npm run build