December 4, 2017 Push Technology

Creating A Chat Application In Diffusion 6.0

Diffusion enables the creation of scalable real-time solutions on mobile, browser or desktop. Our latest release, Diffusion 6.0, includes new features to simplify development of collaborative applications, like real-time text chat.

In this article, we’ll discuss a simple example chat application we developed to demonstrate three new Diffusion 6.0 features:

  • Time series topics
  • Topic persistence
  • Topic notifications

Time series topics

The new time series topic type enables you to represent a sequence of events with a single topic. Each time series topic has a value type for the events it contains: int64, double, string, JSON, recordV2 or binary.

New values can be appended to the time series topic by multiple clients. They will be streamed to all subscribers of the topic in the same manner as with other topic types. Time series topics also retain a record of previous values which can be queried or updated and therefore used to create real time interactive applications which maintain a history of events.

The time series topic is a natural fit for many applications like chat or turn-based browser games, but also for creating applications which require retention of previous data points. These data points could originate from a topic that publishes prices or tracking data which can be collected and used for the purposes of data analysis or visualization.

Topic persistence

Topic persistence is another new feature shipped with Diffusion 6.0. Topic persistence allows the Diffusion server to automatically store the full state of the topic tree to disk so that it can be quickly restored when the server is restarted. Combined with a time series topic, persistence means that the history of a topic can be stored on the server, and kept even through restarts.

Topic notifications

Topic notifications enable a client to receive information about changes to the topic tree structure, without needing to receive topic values.

Example — Embedding live chat into a website

Building a chat application with these new Diffusion features is a straightforward process because a chat session can be implemented as a single time series topic, with each new message appended to the topic as an event.

In our example support chat application, a popup window has been embedded into a web page (we used the first World Wide Web page ever hosted at CERN) using HTML5 elements.


The chat popup has been embedded in a website and can directly stream data to and from the Diffusion server.


After the page loads, the Diffusion JavaScript client connects to the Diffusion server and creates a unique time series topic for each chat session, using a topic specification. The specification determines how many events the topic retains and how many events a new subscriber receivers.


Here’s the code used to send a new chat message from the chat popup to the server:


Here’s the code used to make the chat popup receive and display new messages. The client registers a callback which appends all incoming messages to an HTML element with the id ‘chatmessages.’


To allow ‘agents’ to answer chats, we made a simple single page web application. The agent application uses topic notifications to subscribe to new chat sessions automatically.

The agent receives each user’s message history and can reply to their chats. With persistence enabled, the conversations are maintained even if the Diffusion server is restarted.

Each user has been assigned a random colour as their username and the agent can chat with them by switching tabs.

We use topic notifications to detect when a new chat session starts and update the agent view. When a new topic is added under the path /chat/chatsessions/, the addUser callback is called to add a representation of the
chat session to the agent interface.

The time series topic can be applied creatively to implement other similar web, desktop or mobile applications. It is supported by the Javascript, Java, Android or Apple clients, and is only one of the many new features available in Diffusion 6.0.


Enjoy the rich functionality of Diffusion 6.7 as part of your event-driven application.

Quick Start Guide

Step-by-step guide to getting started.

Diffusion Cloud

SaaS offering that focuses on business.

Diffusion On-Premise

A pub-sub platform for real-time applications.