npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

mesg-pusher

v3.0.3

Published

MESG Service to interact with Pusher

Readme

mesg-pusher License Latest Release Build Status mesg-cli semantic-release Codacy Badge Dependencies

MESG Service for Pusher ID: com.mesg.pusher

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

  1. on MESG Application on a server A : use this MESG Service to send notifications over Pusher.

  2. on MESG Application on a server B : listen to the notifications emitted by MESG Application on a server A over Pusher.

How to listen in a MESG Application

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 Application
const { application } = require('mesg-js')
const mesg = application()
const Pusher = require('pusher-js')
const pusher = new Pusher('PUSHER_APP_KEY', { cluster: 'PUSHER_CLUSTER', forceTLS: true }) // replace with your credentials
const INSTANCE_HASH = await mesg.resolve('com.mesg.pusher')
const 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 channel
const channel = pusher.subscribe(CHANNEL)
// on Pusher notification received
channel.bind(EVENT, data => {
  // example : launch MESG service trigger task
  mesg.executeTask({
    instanceHash: INSTANCE_HASH,
    taskKey: 'trigger',
    inputs: mesg.encodeData({ ...CREDENTIALS, channel: CHANNEL, event: EVENT, ...data })
  })
})

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=...
    • command
      source .env && yarn test

Definitions

Tasks

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 |

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 |

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 |

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) |