Lightstreamer is a realtime engine that delivers asynchronous realtime data over HTTP and Websockets to and from browser-based, mobile, and desktop applications.
Lightstreamer implements features like adaptive streaming, bandwidth and frequency throttling, and high scalability which allows it to handle the distribution of live data to its clients in an efficient way.
Potential use cases of Lightstreamer:
Streaming analytics applications
Gaming
Social networks
Monitoring
Finance
Betting/Casinos
Layers of Lightstreamer Server
History
Lightstreamer was first created in 2000 and it was one of the first efforts at implementing realtime data-push using HTML pages without using Java applets. This brought about a new market niche which is known by several terms such as push technology, realtime web, data push, reverse AJAX, and streaming AJAX.
The Lightstreamer product has been used by many startups and organizations. Gartner is the world’s leading information technology research and advisory company, and in 2012 it acknowledged Weswit (the name of Lighstreamer company at the time) as a “Cool Vendor in Application and Integration Platforms”.
Lightstreamer Core Components
Multichannel Transports
Lightstreamer transport layer makes use of HTTP and WebSocket protocols to enable bidirectional communication. In addition, several mechanisms are used in order to achieve bidirectional realtime communication that can go through any type of firewall, proxy, or network intermediaries.
Lightstreamer also makes use of Stream-Sense in order to implement a method to detect the best transport to be used per client with sequences of automatic fallback when streaming is blocked either by proxy or antivirus software. Lightstreamer also makes use of the infrastructure and protocol provided by Apple (APNs) and Google (FCM) to provide native transport support for push notifications to mobile clients.
Message Routing
Although the multichannel transport layer offers a way to deliver messages on the internet, it’s not sufficient to build complex and flexible applications.
Lightstreamer provides message routing as a convenient way to deliver the right data to the right recipient by making use of the publish-subscribe (pub-sub) architectural pattern which is suitable for both one-to-many and one-to-one messaging.
Adapters
Lightstreamer adapters are server-side custom components connected to the Lightstreamer server. The purpose of the Lightstreamer adapter is to interface the Kernel with any other data source and to also implement custom authentication and authorization logic. Note: The Lightstreamer Kernel is the core of the server, which implements some features such as prefiltering and pre-elaboration on update events, as well as data structure allocation for each activated events.
The adapter APIs currently provided are for Java, .NET, Node.js, and Python. More adapters can be developed in any language to communicate to the Lightstreamer server via plain TCP through the Adapter Remoting Infrastructure protocol.
Lightstreamer Client
Lightstreamer exposes APIs in different client libraries built for different platforms used to integrate any application with the Lightstreamer server.
The list of available client libraries can be found here.
Lightstreamer Server
The Lightstreamer server is a standalone process that runs in a Java virtual machine. The Kernel of the Lightstreamer server takes control of the operating system’s TCP/IP stack and takes care of the real-time flow of data for each client to optimize the data transmission as much as possible.
Lightstreamer adapter
Resources
Recommended Articles
RocketMQ
RocketMQ is an open-source distributed message-oriented middleware and streaming platform. It supports protocols such as JMS, OpenMessaging, and TCP.
AWS SQS
AWS SQS is a distributed message queuing service for asynchronous messaging.
How to stream Kafka messages to Internet-facing clients over WebSockets
Kafka is used by a plethora of companies to power their realtime data streaming pipelines. Here, we explore how it can be used with WebSockets to stream data over the Internet.