README
This library is no longer maintained by Upskill.
We will be releasing a full JavaScript SDK which will be officially maintained soon.
Feel free to use this code as-is or as an example
of how to authenticate to the Skylight API
skylight-extension-node
This package simplifies the connection process when developing a Skylight Extension in Node.js.
This first implementation is very simple and just handles connection logic. It just makes an authentication request to the appropriate API endpoint, connects to the notification system over MQTT, and subscribes to the Extension's topic.
Setup
First, install the package from npm with:
npm install skylight-extension
and include it in your extension's code by adding an appropriate require statement:
const skylight = require('skylight-extension')
Usage
Using the extension helper is simple. Just set up the API access credentials that
Skylight displayed in the Domain Settings > API Credentials screen for the extension
that you created and call the connect()
method, passing it a callback.
Once successful you're able to access the client
object which is just a reference
to the underlyling MQTT client object so it can be used in exactly the same way listening
to connection, message, and other MQTT events.
const skylight = require('skylight-extension')
const options = {
realm: 'myRealm',
username: 'myUsername',
password: 'myPassword',
domain: 'myDomain' //Optional (defaults to skylight.upskill.io if unspecified)
}
skylight.connect(options, () => {
//Handle Connection Event
skylight.client.on('connect', () => {
console.log('INFO: My first Skylight Extension is Online! Extension ID is: ', skylight.config.clientId)
//Heres an example API call
skylight.api.get('/my/route', bodyJson, (err, res, body) => {
//Do something
console.log(body);
})
})
//Handle Messages Coming out of Skylight
skylight.client.on('message', (topic, message, packet) => {
console.log('INFO: Message received', message.toString())
})
})