Hex.pm Docs CI

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.