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
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:
cp tests/config.example.json tests/config.jsonand update with your own Pusher application credentials.npm updateto ensure you have vows innode_modules- 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.