KI BMS
WebSocket-Transport
Optional: gleiche CRUD-Oberfläche plus Live-Events über einen Socket.
WebSockets sind optional. Die HTTP-API deckt jede Operation alleine ab - wenn dir das genügt, kannst du diese Seite überspringen. Der WebSocket-Transport ist da, wenn du Live-Events möchtest (kein Polling) oder wenn du den TLS-Handshake nur einmal für viele Operationen zahlen willst. Verbinde dich mit /xapi2/ch, übergib dasselbe Bearer-Token wie bei der HTTP-API und führe jede CRUD-Operation (list, read, create, update, delete) plus subscribe über denselben Socket aus. Auth, Scopes, Anfragelimits, Audit und Zugriffsprüfungen sind identisch zu HTTP - nur der Transport unterscheidet sich.
So funktioniert's
Handshake
Mit /xapi2/ch?token=<jwt-oder-pat> verbinden oder Token via Sec-WebSocket-Protocol: bearer, <token> Header senden. Server antwortet bei Annahme mit einem hello Frame.
Live-Events
{ op: "subscribe", id, dataType } senden, um event-Frames zu erhalten, sobald eine Zeile dieses Typs erstellt, aktualisiert oder gelöscht wird - server-seitig nach deinem Lesezugriff gefiltert.
Streaming-Listen
WS list streamt Ergebnisse als list_chunk Frames (Standard 25/Seite, harte Obergrenze 10k Zeilen gesamt) gefolgt von einem list_done mit denselben Metadaten wie HTTP's meta Block. Nützlich für große Erstabfragen.
Beispiele
const ws = new WebSocket(`wss://${location.host}/xapi2/ch?token=${encodeURIComponent(token)}`,)ws.onopen = () => {// Receive live created/updated/deleted events for this type.ws.send(JSON.stringify({ op: "subscribe", id: "sub-1", dataType: "application" }))}ws.onmessage = (msg) => {const frame = JSON.parse(msg.data)if (frame.op === "event") console.log(frame.event, frame.dataType, frame.object ?? frame.id)}