0.1.5 • Published 4 years ago

smart-web-messenger v0.1.5

Weekly downloads
44
License
-
Repository
-
Last release
4 years ago

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

The bundled library will be available in ./dist

0.1.5

4 years ago

0.1.4

4 years ago

0.1.3

4 years ago

0.1.2

4 years ago

0.1.0

4 years ago

0.1.1

4 years ago

0.0.8

4 years ago

0.0.7

4 years ago

0.0.6

4 years ago

0.0.5

4 years ago

0.0.3

4 years ago

0.0.4

4 years ago

0.0.2

4 years ago

0.0.1

4 years ago