Share your code. npm Orgs help your team discover, share, and reuse code. Create a free org »

    angular-primuspublic

    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

    install

    npm i angular-primus

    Downloadsweekly downloads

    3

    version

    1.0.1

    license

    MIT

    repository

    github.com

    last publish

    collaborators

    • avatar