mesg-pusher
MESG Service for Pusher
ID: com.mesg.pusher
Contents
Installation
MESG SDK
This service requires MESG SDK to be installed first.
You can install MESG SDK by running the following command or follow the installation guide.
npm install -g mesg-cli
Deploy the Service
To deploy this service, go to this service page on the MESG Marketplace and click the button "get/buy this service".
Features
Currently able to use Pusher
channels, channel, trigger and triggerBatch features from MESG
.
Use case
MESG Applications
on different servers communicating together over Pusher
notifications.
Example
-
on
MESG Application
on a serverA
: use thisMESG Service
to send notifications overPusher
. -
on
MESG Application
on a serverB
: listen to the notifications emitted byMESG Application
on a serverA
overPusher
.
MESG Application
How to listen in a Install MESG
and Pusher
dependencies :
yarn add mesg-js pusher-js
Create a socket connection to listen and react to Pusher
notifications :
// in a MESG Applicationconst application = const mesg = const Pusher = const pusher = 'PUSHER_APP_KEY' cluster: 'PUSHER_CLUSTER' forceTLS: true // replace with your credentialsconst INSTANCE_HASH = await mesgconst CHANNEL = 'some-channel'const EVENT = 'some-event'const CREDENTIALS = appId: 'PUSHER_APP_ID' key: 'PUSHER_APP_KEY' secret: 'PUSHER_APP_SECRET' // replace with your credentials// subscribe to Pusher channelconst channel = pusher// on Pusher notification receivedchannel
Environment variables
Instead of providing Pusher credentials or options on each request, these can be provided via command line arguments or .env
file, as shown below in Integration tests.
As usual, user inputs always takes precedence on defined environment variables.
Name | Enviroment Variable |
---|---|
appId | PUSHER_APP_ID |
cluster | PUSHER_CLUSTER |
useTLS | PUSHER_USE_TLS |
host | PUSHER_HOST |
keepAlive | PUSHER_KEEP_ALIVE |
key | PUSHER_APP_KEY |
port | PUSHER_PORT |
proxy | PUSHER_PROXY |
secret | PUSHER_APP_SECRET |
timeout | PUSHER_TIMEOUT |
Integration tests
In order to launch them locally you will have to pass the environment variables along with your command, like so :
- via command line arguments :export PUSHER_APP_ID=... && export PUSHER_APP_KEY=... && export PUSHER_APP_SECRET=... && export PUSHER_CLUSTER=... && export MESG_ACCOUNT=... && export MESG_PASSPHRASE=... && yarn test
- via
.env
file :- file
export PUSHER_APP_ID=... export PUSHER_APP_KEY=... export PUSHER_APP_SECRET=... export PUSHER_CLUSTER=... export MESG_ACCOUNT=... export MESG_PASSPHRASE=...
- commandsource .env && yarn test
- file
Definitions
Tasks
trigger
Task key: trigger
triggers an event on one or more channels
Inputs
Name | Key | Type | Description |
---|---|---|---|
appId | appId |
String |
optional Pusher application ID |
key | key |
String |
optional Pusher application key |
secret | secret |
String |
optional Pusher application secret key |
useTLS | useTLS |
Boolean |
optional whether to encrypt notification, defaults to false |
cluster | cluster |
String |
optional if `host` is present, it will override the `cluster` option |
host | host |
String |
optional whether to use a different host, defaults to api.pusherapp.com |
port | port |
Number |
optional whether to use a different port, defaults to 80 for unuseTLS and 443 for useTLS |
proxy | proxy |
String |
optional URL to proxy the requests through |
timeout | timeout |
Number |
optional timeout for all requests in milliseconds |
keepAlive | keepAlive |
Boolean |
optional enables keep-alive, defaults to false |
name | name |
String |
event name |
data | data |
Object |
event data (maximum 10Kb) |
channels | channels |
Object |
optional array of one or more channel names - limited to 100 channels |
channel | channel |
String |
optional channel name if publishing to a single channel (can be used instead of channels) |
socket_id | socket_id |
Object |
optional excludes the event from being sent to a specific connection |
Outputs
Name | Key | Type | Description |
---|---|---|---|
message | message |
String |
a dummy 'sent' message |
triggerBatch
Task key: triggerBatch
triggers multiple events in a single call (up to 10 per call on the multi-tenant clusters)
Inputs
Name | Key | Type | Description |
---|---|---|---|
appId | appId |
String |
optional Pusher application ID |
key | key |
String |
optional Pusher application key |
secret | secret |
String |
optional Pusher application secret key |
useTLS | useTLS |
Boolean |
optional whether to encrypt notification, defaults to false |
cluster | cluster |
String |
optional if `host` is present, it will override the `cluster` option |
host | host |
String |
optional whether to use a different host, defaults to api.pusherapp.com |
port | port |
Number |
optional whether to use a different port, defaults to 80 for unuseTLS and 443 for useTLS |
proxy | proxy |
String |
optional URL to proxy the requests through |
timeout | timeout |
Number |
optional timeout for all requests in milliseconds |
keepAlive | keepAlive |
Boolean |
optional enables keep-alive, defaults to false |
batch | batch |
Object |
array of events (maximum 10) |
Outputs
Name | Key | Type | Description |
---|---|---|---|
message | message |
String |
a dummy 'sent' message |
channels
Task key: channels
get the list of the channel within an application that have active subscriptions (also referred to as being occupied)
Inputs
Name | Key | Type | Description |
---|---|---|---|
appId | appId |
String |
optional Pusher application ID |
key | key |
String |
optional Pusher application key |
secret | secret |
String |
optional Pusher application secret key |
useTLS | useTLS |
Boolean |
optional whether to encrypt notification, defaults to false |
cluster | cluster |
String |
optional if `host` is present, it will override the `cluster` option |
host | host |
String |
optional whether to use a different host, defaults to api.pusherapp.com |
port | port |
Number |
optional whether to use a different port, defaults to 80 for unuseTLS and 443 for useTLS |
proxy | proxy |
String |
optional URL to proxy the requests through |
timeout | timeout |
Number |
optional timeout for all requests in milliseconds |
keepAlive | keepAlive |
Boolean |
optional enables keep-alive, defaults to false |
params | params |
Object |
optional additional parameters to be sent as query string parameters (see HTTP API Reference) |
Outputs
Name | Key | Type | Description |
---|---|---|---|
channels | channels |
String |
array of channel names |
channel
Task key: channel
fetch one or some attributes for a given channel
Inputs
Name | Key | Type | Description |
---|---|---|---|
appId | appId |
String |
optional Pusher application ID |
key | key |
String |
optional Pusher application key |
secret | secret |
String |
optional Pusher application secret key |
useTLS | useTLS |
Boolean |
optional whether to encrypt notification, defaults to false |
cluster | cluster |
String |
optional if `host` is present, it will override the `cluster` option |
host | host |
String |
optional whether to use a different host, defaults to api.pusherapp.com |
port | port |
Number |
optional whether to use a different port, defaults to 80 for unuseTLS and 443 for useTLS |
proxy | proxy |
String |
optional URL to proxy the requests through |
timeout | timeout |
Number |
optional timeout for all requests in milliseconds |
keepAlive | keepAlive |
Boolean |
optional enables keep-alive, defaults to false |
params | params |
Object |
optional additional parameters to be sent as query string parameters (see HTTP API Reference) |
Outputs
Name | Key | Type | Description |
---|---|---|---|
occupied | occupied |
Boolean |
whether the channel currently has active subscriptions |
user_count | user_count |
Number |
optional number of distinct users currently subscribed to this channel (a single user may be subscribed many times, but will only count as one) |
subscription_count | subscription_count |
Number |
optional number of connections currently subscribed to this channel (not available by default, has to be enabled in dashboard) |