Just a second...

JavaScript

The JavaScript® Unified API is provided in the file diffusion.js and can be accessed through the web or through NPM.

Use with Node.js:

Install with NPM:

npm install --save diffusion

Include in your Node.js application:

const diffusion = require('diffusion');

Get the minified JavaScript:

Download the latest JavaScript file from the following URL:
http://download.pushtechnology.com/clients/5.9.24/js/diffusion.js
You can also download the JavaScript file as a tarball that can be installed locally by using NPM:
http://download.pushtechnology.com/clients/5.9.24/js/diffusion-js-5.9.24.tgz
The JavaScript file is also located in your Diffusion™ server installation:
diffusion_directory/clients/js

Use TypeScript definitions with the JavaScript client library:

If you got the JavaScript client library using NPM, the TypeScript definitions are included.

You can also download a TypeScript definition file from the following URL:
http://download.pushtechnology.com/clients/5.9.24/js/diffusion-5.9.24.d.ts
The TypeScript file is also located in your Diffusion server installation:
diffusion_directory/clients/js

Include the TypeScript definition file in your IDE project to use the TypeScript definitions when developing a JavaScript client for Diffusion.

Capabilities

To see the full list of capabilities supported by the JavaScript API, see Feature support in the Diffusion Unified API.

Support

Table 1. Supported platforms and transport protocols for the client libraries
Platform Minimum supported versions Supported transport protocols
JavaScript

es6

(TypeScript 1.8)

WebSocket

HTTP (Polling XHR)

Resources

Using

Promises
The Diffusion JavaScript Unified API uses the Promises/A+ specification.
Views

The JavaScript Unified API provides a view capability.

Use views to subscribe to multiple topics by using a topic selector and receive all the data from all topics in the selector set as a single structure when any of the topics are updated. If the topic selector matches a topic which is subsequently added or removed, the view is updated.

The following example shows views being used to present data from multiple topics as a single structure:
diffusion.connect({
    host        : 'localhost',
    port        : 8080,
    secure      : false,
    principal   : 'control',
    credentials : 'password'
}).then(function(session) {

    // Assuming a topic tree:
    //
    // scores
    //   |-- football
    //   |     |-- semi1
    //   |     |-- semi2
    //   |     |-- final
    //   |
    //   |-- tennis
    //         |-- semi1
    //         |-- semi2
    //         |-- final

    // Use a regular expression to create a view of the topics tracking the
    // scores during the finals for each sport.
    var view = session.view('?scores/.*/final');

    // Alternatively, we can use a topic set. Note that the topics do not need
    // to be under a common root, they may be anywhere within the topic tree.
    var view2 = session.view('#>scores/football/final////>scores/tennis/final');

    // If any of the topics in the view change, display which topic changed
    // and its new value.
    view.on({
        update : function(value) {
            // Get and print the entire view structure.
            console.log('Update: ', JSON.stringify(value, undefined, 4));

            // Get individual topics. Returns a Buffer, which is automatically
            // converted to a String during concatenation, below.
            //
            // Note that the structure may not exist if the value has not been
            // updated.
            console.log('Football score: ' + value.scores.football.final);
            console.log('Tennis score  : ' + value.scores.tennis.final);

            // or ...
            // console.log('Football score: ' + value['scores']['football']['final']);
        }
    });

    // The structure can also be accessed outside the update event.
    console.log('Football score: ' + view.get().scores.football.final);
});
Regular expressions

The JavaScript client uses a different regular expression engine to the Diffusion server. Some regular expressions in topic selectors are evaluated on the client and others on the Diffusion server. It is possible that topic selectors that include complex or advanced regular expressions can behave differently on the client and on the Diffusion server.

For more information, see Regular expressions.