Applications need to communicate with each other for data to flow bi-directionally. The traditional APIs (Application Program Interface) that are generally in use work with a request and response action. This is a drawback as the data is not updated as and when a change is made. So, live update of data has always been a challenge. Real-time communication, when it arrived, was exclusive to some niche industries such as power plants, automobile industries, chemical industries, etc. Finally, with the growth of internet and technology, real-time communication has come out of its cocoon.
The advancement in real-time APIs has not only solved the problem of live data updates, but has also ensured that the technology is available, accessible, and affordable to everyone. Now, the new data gets pushed right away without waiting for a request from the users. This facilitates instant communication and data updates. This technological improvement has not only made the lives of users easier but also made businesses work with their clients more effectively. If you are using Salesforce and wonder if you can experience real-time API, the answer is a resounding “yes.”
What is with Streaming API?
Streaming API from salesforce is a simple way to define events and send push notifications to users in real-time. With Streaming APIs, the need for refreshing your Salesforce screen to keep an eye on the data changes is eliminated. You can be sure of getting notified in real-time whenever a change happens.
How does this Streaming API work?
This is a background process. The client connects to the server and requests for certain information from the server. The server holds the request and waits until the information is available from Salesforce. Once the information is available, the server sends the response to the client immediately. In this case, a PushTopic is created with the query.
Each PushTopic record will correspond to a PushTopic channel. This channel defines which record creates, updates, deletes or undeletes events will generate the notifications. The client subscribes to the PushTopic channel. So whenever the defined criterion is met for an object, a notification will be sent to the client.
Creating a PushTopic:
Here is a sample PushTopic created to get notified when there is a change in Salesforce account (whenever an object is newly created or an existing object gets modified)
PushTopic pushTopic = new PushTopic();
pushTopic.Name = ‘AccountUpdates’;
pushTopic.NotifyForOperationUpdate = true;
pushTopic.NotifyForOperationCreate = true;
pushTopic.NotifyForOperationDelete = false;
pushTopic.NotifyForOperationUndelete = false;
pushTopic.Query = ‘SELECT Id, Name FROM Account’;
pushTopic.ApiVersion = 23.0;
Mandatory fields: ApiVersion, Name and Query
Receive Notifications in Visualforce page:
There are several steps that can be taken to improve Visualforce performance. For the above PushTopic, in order to receive notification in the visualforce page, we will have to subscribe to the PushTopic from the visualforce page. So whenever an event occurs, the notification will be seen on the visualforce page.
Output for the above activity:
- Create a PushTopic
- Download the CometD compressed archive (.tgz) file (online source)
- Extract the compressed file.
- Attach the below mentioned static resources in Salesforce.
json2.js, jquery-1.5.1.js, jquery.cometd.js, cometd.js
- Start with the Visualforce page.
Limitations of Streaming API:
There are few things to keep in mind while creating the streaming APIs
- The maximum length of the query used should be 1300 characters.
- Reconnection gap after a successful connection is 40 seconds
- Maximum number of subscribers per topic/all topic will be
- Performance and Unlimited Editions – 2000
- Enterprise Edition – 1000
- All other editions – 20
- The maximum length of push topic name is 25 characters.
- Maximum number of topics for an organization