Lightstreamer

Hex.pmDocsCI

An unofficial Elixir client for Lightstreamer servers, speaking TLCP 2.5.0 over WebSocket.

Vendor-agnostic: this library implements the published TLCP protocol and nothing else — adapter sets, item naming, field semantics and credential formats are defined by the server you connect to. "Lightstreamer" is a trademark of Lightstreamer Srl; this project is not affiliated with them.

Installation

Add lightstreamer to your dependencies in mix.exs:

def deps do
[
{:lightstreamer, "~> 0.1"}
]
end

Quick start

Stream live stock quotes from Lightstreamer's public demo server — paste this into iex -S mix:

{:ok, session} =
Lightstreamer.connect("https://push.lightstreamer.com", adapter_set: "DEMO")
{:ok, sub} =
Lightstreamer.subscribe(session,
data_adapter: "QUOTE_ADAPTER",
items: ["item1", "item2", "item3"],
fields: ["stock_name", "last_price", "time"]
)
for _ <- 1..10 do
receive do
{:lightstreamer, ^sub, {:update, %Lightstreamer.Update{} = update}} ->
IO.inspect(update.values, label: update.item)
end
end
Lightstreamer.close(session)

The first three updates are the snapshot (one full state per item); the rest are live changes as the simulated market moves. Updates are plain messages, so a real consumer is usually a GenServer handling them in handle_info/2.

Sessions heal themselves by default: server-driven rebinds are transparent, and on connection loss the session reconnects with capped exponential backoff, re-issuing subscriptions. See the Lightstreamer module documentation for the full API, options, and the delivery-message contract.

License

Apache-2.0 — see the LICENSE file.