Lightstreamer

Lightstreamer is a web-based asynchronous messaging project, implementing the WebSocket protocol, the Comet model, the push technology paradigm, and the real-time web practices.

Origin
The first version of Lightstreamer was created at the end of 2000, as one of the first attempts to implement real-time data push to HTML pages without employing Java applets. The application domain driving most of the interest in push technology at that time was market data distribution for the financial services industry. In the following years, Lightstreamer was used within other application domains too, including aerospace telemetry, where NASA chose Lightstreamer to push live telemetry data for the International Space Station.

Architecture
The Lightstreamer Server is a high-performance engine that manages all the connections with the clients through the Internet. It integrates with the backend systems via custom adapters. The Data Adapter receives the real-time data flow from the data feed and injects it into the Lightstreamer Server. The Metadata Adapter has control over authentication, authorization, and quality of service.

Lightstreamer Server is made up of three logical layers:


 * Web Transport. Lightstreamer implements a bi-directional transport based on standard Web protocols. This means it uses several underlying techniques (WebSocket, Comet, HTTP streaming, etc.) to provide the upper layers with a channel over which data can be exchanged in real-time with any client connected through the Web, even if protected by firewalls and proxies.
 * Messaging. Lightstreamer implements a publish–subscribe pattern, suitable for both one-to-many fan-out scenarios and one-to-one messaging needs. It takes care of routing each message to the right recipients, multiplexing the flow of events on the top of each connection with the clients.
 * Semantics+QoS+Security. It implements data semantics (tables, schema, metadata, conflation, etc.), network optimization (dynamic throttling, bandwidth control, resampling, batching, etc.), and full session management (authentication, fine-grained authorization, etc.) on the top of publish-subscribe.

Server-Side APIs

 * Java In-Process Adapter API
 * Java Remote Adapter API
 * .NET Standard Adapter API
 * Node.js Adapter API
 * Python Adapter API
 * Generic Adapter API (based on TCP sockets)
 * JMX Management API

Client-Side APIs

 * Web Client API
 * Node.js Client API
 * Android Client API
 * Java SE Client API
 * .NET Standard Client API
 * Swift Client API
 * iOS Client API
 * macOS Client API
 * tvOS Client API
 * watchOS Client API
 * visionOS Client API
 * Python Client API
 * Flutter Client API
 * Flash Client API
 * Flex and AIR Client API
 * Silverlight Client API
 * BlackBerry Client API
 * Java ME Client API
 * Generic Client API (via a documented protocol)