angular-primus

1.0.1 • Public • Published

angular-primus Build Status

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

/angular-primus/

    Package Sidebar

    Install

    npm i angular-primus

    Weekly Downloads

    4

    Version

    1.0.1

    License

    MIT

    Last publish

    Collaborators

    • neoziro