Skip to content

evatechsoft/pusher-node-server

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

32 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Pusher node.js Server library

This is a node.js library for interacting with the Pusher REST API.

Registering at http://pusher.com and use the application credentails within your app as shown below.

Installation

$ npm install pusher

How to use

Constructor

var Pusher = require('pusher');

var pusher = new Pusher({
  appId: 'YOUR_PUSHER_APP_ID',
  key: 'YOUR_PUSHER_APP_KEY',
  secret: 'YOUR_PUSHER_SECRET_KEY'
});

Publishing/Triggering events

To trigger an event on one or more channels use the trigger function.

A single channel

pusher.trigger( 'channel-1', 'test_event', { message: "hello world" } );

Multiple channels

pusher.trigger( [ 'channel-1', 'channel-2' ], 'test_event', { message: "hello world" } );

Excluding event recipients

In order to avoid the person that triggered the event also receiving it the trigger function can take an optional socketId parameter. For more informaiton see: http://pusher.com/docs/publisher_api_guide/publisher_excluding_recipients.

var socketId = '1302.1081607';

pusher.trigger(channel, event, data, socketId);

Authenticating Private channels

To authorise your users to access private channels on Pusher, you can use the auth function:

var auth = pusher.auth( socketId, channel );

For more information see: http://pusher.com/docs/authenticating_users

Authenticating Presence channels

Using presence channels is similar to private channels, but you can specify extra data to identify that particular user:

var channelData = {
	user_id: 'unique_user_id',
	user_info: {
	  name: 'Phil Leggetter'
	  twitter_id: '@leggetter'
	}
};
var auth = pusher.auth( socketId, channel, channelData );

The auth is then returned to the caller as JSON.

For more information see: http://pusher.com/docs/authenticating_users

Application State

It's possible to query the state of the application using the pusher.get function.

pusher.get( { path: path, params: params }, callback );

The path property identifies the resource that the request should be made to and the params property should be a map of additional querystring key and value pairs.

The following example provides the signature of the callback and an example of parsing the result:

	pusher.get( { path: '/channels', params: {} }, function( error, request, response ) {
		if( response.statusCode === 200 ) {
			var result = JSON.parse( response.body );
			var channelsInfo = result.channels;
		}
	} );    

Get list of channels in an application

pusher.get( { path: '/channels', params: params }, callback );

Information on the optional params option property and the structure of the returned JSON is defined in the REST API reference.

Get single channel state

pusher.get( { path: '/channels/[channel_name]', params: params }, callback );

Information on the optional params option property and the structure of the returned JSON is defined in the REST API reference.

Get list of users on a presence channel

pusher.get( { path: '/channels/[channel_name]/users' }, callback );

The channel_name in the path must be a presence channel. The structure of the returned JSON is defined in the REST API reference.

Tests

The tests run using Vows and were added in 0.0.3. To run:

  1. cp tests/config.example.json tests/config.json and update with your own Pusher application credentials.
  2. npm update to ensure you have vows in node_modules
  3. Run the tests using node_modules/vows/bin/vows tests/*/*.js

Credits

This library is based on the work of:

  • Christian Bäuerlein and his library pusher.
  • Jaewoong Kim and the node-pusher library.

License

This code is free to use under the terms of the MIT license.

Packages

No packages published