npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

ng-poller

v1.1.0

Published

Angular.js service to fetch content from a server when updated

Downloads

8

Readme

ngPoller

Lightweight angular service to fetch updates from a server via the polling technique

Dependancies

You will only need angular installed, so make sure to run

npm install --save angular

Installation

Just run npm install --save ng-poller or git clone this repository, and include the ngPoller.js file in your project. Make sure to include ngPoller as a dependancy both in your angular module and in your controller.

How to use it

There are a couple of steps involved to have poller up and running, both on your frontend and your backend. First, declare on your frontend the resources you will be watching for updates:

poller.listeners({
  'rowsUpdate': { url: `http://localhost:8001/row`, frequency: 1000 }
});

Then start listening for changes:

poller.listen('rowsUpdate', (data) => {
  console.log(data);
});

I'd suggest adding the .listeners() function inside the .run() method of your main module, but it's not a requirement, I just like to separate the configuration from the actual logic. What is required is that it is called before the .listen() function. The .listeners() function gets passed an object that holds the settings for every url to monitor. The keys of this object are identifiers which will be required by the .listen() function in order to identify the resource to watch. The frequency is how often you want to ask the server for changes, in millisecond. Defaults to 2000. On your backend you will need to implement the formatForPoller() function as below

const formatForPoller = (hasNew, def, success) => {
  const ret = {
    state: 'old',
    data: def
  }

  if( hasNew ){
    ret.state = 'new';
    ret.data = success;
  }

  return ret;
}

This function needs to be called on the result you want to send the client, when changes are found. The implementation may vary slightly depending upon the language the backend is built on. Its parameters are:

  • hasNew: whether or not there are new results
  • def: default result to send the client when no updates are found
  • success: result to send if updates are found

Don't forget to call this function before sending results to the client, as this is the only format supported by the poller service. Two parameters are also available to the resource watched:

  • newOnly: true if it's the first time the resource is called
  • frequency: how many milliseconds separate one call from another

This is basically it, you will only need to determine if new results are found on every call, since "new result" it's a pretty generic concept, and you are the only one who can extablish what it means in your particular scenario. You can find an example implementation in node.js, under the /example directory. Add new lines to the .txt file to see the html page updating.

The service provides also a .detach() function to, yeah, you guessed it, detach a listener, passing in the event name, like so:

poller.detach('rowsUpdate');

Contact me

If you find bugs feel free to open an issue and/or send a pull request. If you feel something is not clear, or the documentation needs to be updated send me a DM on Twitter or on Facebook