Skip to content
Deep integration of Google Analytics in to Primus using event tracking
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.


Version npmBuild StatusDependenciesCoverage StatusIRC channel

Integrates Google Analytics deeply in the Primus client by using its event tracking functionality. This allows you to get an insight on how things are running on the client.


The module is released in the public npm registry and can be installed by running:

npm install --save primus-analytics


We assume that you've already setup your Primus server. If not we assume the following base initialization in our example code:

'use strict';

var Primus = require('primus')
  , http = require('http')
  , server = http.createServer();

var primus = new Primus(server);

To add this plugin to your created Primus server instance you need to use the .plugin method which accepts a name and the required plugin as argument. The name can be anything you want. It's there for lookup and debugging purposes.

primus.plugin('google analytics', require('primus-analaytics'));

Please note that after adding this plugin, you should re-generate the client library if you are not using the primus library that is served from /primus/primus.js. +'/your-completed-library.js');


Now that the server is completely set up with the correct plugins and all files have been re-compiled we can start configuring the client side. In most if not all cases you don't really need to do anything here. When you create a new Primus client it will automatically start tracking:

  • The custom events and their names when using primus-emit or primus-emitter
  • Close, reconnected, reconnect-failed, open events.
  • Reconnect-start event.
  • Exception tracking for error events.

But everything here is configurable by supplying an analytics object in the options object of the Primus constructor. The following options are supported:

  • category The event category we should log the events under. It defaults to primus.
  • events Should be an object where the key is the name of the event we tracked and the value is the event action that should be logged. If value is set to false we assume that you want to prevent this event from being tracked so it will not be sent to Google Analytics. This is also useful to block highly frequent events so you don't reach your event limit in Google Analytics.
  • app With the exception reporting that we trigger on the error event, we also send the name of the application, the app property allows you to configure this name. If defaults to primus.
var primus = new Primus('', {
  analytics: {
    category: 'chat server',
    events: {
      'load more': 'load-more-messages',
      'mousemove': false



You can’t perform that action at this time.