angular-primus
v1.0.1
Published
Primus provider for Angular.
Downloads
12
Readme
angular-primus
Primus provider for Angular.
This plugin works with other Primus plugins like primus-emitter and primus-resource.
Install
Using bower
bower install angular-primus
Usage
angular.module('controllers.primus', ['primus'])
.config(function (primusProvider) {
primusProvider
// Define Primus endpoint.
.setEndpoint('http://mywebsite.com')
// Define Primus options.
.setOptions({
reconnect: {
minDelay: 100,
maxDelay: 60000,
retries: 100
}
})
// Define default multiplex option for resources.
.setDefaultMultiplex(false);
})
.controller('PrimusCtrl', function ($scope, primus) {
// Listen "data" event.
primus.$on('data', function (data) {
$scope.data = data;
});
// Write data.
primus.write('hello');
// Listen custom event using primus-emitter.
primus.$on('customEvent', function (customData) {
$scope.customData = customData;
});
// Listen custom event with a filter (more details below)
// ex. server broadcasting a user account update :
primus.$on('account:update', {userId: 23}, function (account) {
_.merge($scope.account, account);
});
// Send data using primus-emitter.
primus.send('customEvent', { foo: 'bar' });
// Use resource with primus-resource.
primus.$resource('myResource').then(function (myResource) {
myResource.myMethod();
});
});
about $on and $filteredOn
$filteredOn
takes as filter either :
an object, whom keys will be deep-matched for correspondance with the 1st param of received data, using lodash matches(...). Example of a deep matching :
primus.$on('node:update', {content: {id: 23, type: 'image'}}, …)
a function, taking the received data as arguments and returning true/false = match/don't match
Both $on
and $filteredOn
will call the listener in Angular context, in an optimized way via $evalAsync. So if you have several listeners on the same event, they will all get executed in the same $digest phase.
$filteredOn
will not trigger any apply if the received data doesn't match the given filter. This is desirable if your Angular app is heavy.
License
MIT