Skip to content

shaitan-masters/node-centrifugo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Centrifuge v3 API back-end wrapper

This is a node module for interacting with the centrifugo(v3) through back-end API.

Documentation for centrifugo(v3) is available here.


Installation

npm install @shaitan-masters/centrifugo

yarn add @shaitan-masters/centrifugo


Usage

Base

import {Centrifuge, CentrifugeError} from '@shaitan-masters/centrifugo';


const centrifuge = new Centrifuge({
	endpoint: 'http://locahost:8000',
	token   : 'adminToken123'
});

try {
	const publish = await centrifuge.publish('channel01', {hello: 'moto'});

	console.log(publish);
	// { epoch: 'Wds32', offset: 3 }
} catch (error) {
	if (error instanceof CentrifugeError) {
		const errorData = error.data;

		console.log(errorData);
		// { code: 42, message: 'some error message' };    
	}
}
Methods
publish(channel: string, data: Payload)
const publish = await centrifuge.publish('channel01', {hello: 'moto'});

//  { 
//      epoch: 'Wds32', 
//      offset: 3 
//  } 
broadcast(channel: string, data: Payload)
const broadcast = await centrifuge.broadcast('channel01', {hello: 'moto'});

//  { 
//      responses: [
//          { epoch: 'Wds32', offset: 3 },
//          { epoch: 'FwaW1', offset: 1 }
//      ] 
//  }
presence(channel: string)
const presence = await centrifuge.presence('channel01');

//  { 
//      presence: {
//          '0e35a387-86a0-4ed1-823f-81b6e1d2e55b': {
//              user: '42',
//              client: '0e35a387-86a0-4ed1-823f-81b6e1d2e55b'
//          }
//      }        
//  } 
presenceStats(channel: string)
const presenceStats = await centrifuge.presenceStats('channel01');

//  { 
//      num_clients: 4
//      num_users: 2     
//  }
history(channel: string, limit: number = 0)
const history = await centrifuge.history('channel01');

// { 
//      publications: [
//          {
//              data: { 
//                  hello: 'moto'
//              },
//              offset: 3
//          },
//          {
//              data: { 
//                  hello: 'moto'
//              },
//              offset: 5
//          }
//      ]      
//  }
historyRemove(channel: string)
const presenceStats = await centrifuge.presenceStats('channel01');

//  {}
channels(pattern: string = '')
const channels = await centrifuge.channels();

//  {
//      channels: {
//          channel01: {
//              num_clients: 2
//          }
//      }
//  }
subscribe(channel: string, user: string)
const subscribe = await centrifuge.subscribe('channel01', '42');

//  {}
unsubscribe(channel: string, user: string)
const unsubscribe = await centrifuge.unsubscribe('channel01', '42');

//  {}
disconnect(user: string)
const disconnect = await centrifuge.disconnect('42');

//  {}
refresh(user: string, client: string, exprireAt: number)
const refresh = await centrifuge.refresh('42', '0e35a387-86a0-4ed1-823f-81b6e1d2e55b', 3600);

//  {}
info()
const info = await centrifuge.info();

//  huge info object
healthCheck()
const health = await centrifuge.healthCheck();

// true/false

Releases

No releases published

Packages

No packages published