Zum Inhalt

Streamer.bot als WebSocket-Client

Statt SB als Server kann SB sich auch als Client zu externen WS-Servern verbinden. Use-Case: SB empfängt Daten von Custom-Game-Servern, Pi-Sensoren, externen Dashboards.

Triggers: Core → WebSocket → Client → Opened/Closed/Message

Wo Client konfigurieren

  1. Settings → Servers/Clients → WebSocket Client
  2. Rechtsklick → + Add Client
  3. Felder:
Feld Wert
Name Custom Identifier (z.B. Custom Game Server)
URL ws://192.168.1.50:9000/sensor
Auto Connect aktiv
Auto Reconnect aktiv
Reconnect Delay 5000 ms
  1. Save

SB verbindet sich automatisch zum externen Server.

Trigger: Client Message

In einer Action:

Trigger: Core → WebSocket → Client → Message

Filter im Trigger-Dialog: welcher Client.

Variablen:

Variable Inhalt
%data% Empfangene Message-String
%clientName% Name des Clients

Use-Case A: Raspberry-Pi-Sensor

Raspberry Pi mit Temperatur-Sensor pusht alle 30s die Temp via WS an SB.

Pi-Code (Python)

import asyncio
import websockets

async def push_temp():
    async with websockets.serve(handler, "0.0.0.0", 9000):
        while True:
            temp = read_sensor()
            await broadcast({"type": "temp", "value": temp})
            await asyncio.sleep(30)

SB

[Event] Pi Temp Update
Trigger: Core → WebSocket → Client → Message (Client: Pi-Sensor)
├── 1. Set Argument: temp = $regex(%data%, "value":([0-9.]+), $1)$
└── 2. Set GDI Text: "Room: %temp%°C"

Use-Case B: Game-Server-Integration

Wenn dein Minecraft-Plugin via WS Events pusht:

[Event] MC Event
Trigger: Client → Message (Client: MinecraftServer)
├── 1. If/Else: %data% Contains "PLAYER_DEATH"
│   └── (Death-Counter logic)
├── 2. If/Else: %data% Contains "PLAYER_JOIN"
│   └── Send Message: "🟢 Spieler joined"

Use-Case C: Cross-PC Stream-Setup ohne SB-Remote

Wenn der Gaming-PC kein SB hat aber dein Web-Stack:

  • Gaming-PC läuft Node.js-Server mit WS auf Port 9000
  • Game-Hotkey schickt JSON an WS
  • SB auf Streaming-PC ist WS-Client zu dem Server
Gaming-PC Node.js → WS Server (Port 9000)
   F8 (Game-Hotkey) → schickt {type:"brb"} an WS

Streaming-PC SB → WS Client zu ws://gamingpc:9000/
   Empfängt {type:"brb"} → OBS Scene-Switch

Connection-Lifecycle

Triggers: - Client Opened — feuert wenn SB sich erfolgreich verbunden hat - Client Closed — wenn Connection verloren geht - Client Message — bei jeder Message vom Server

Use-Case Opened: Notification "Pi-Sensor ist online", oder Initial-Request senden.

[Event] Pi Connected
Trigger: Client Opened (Pi-Sensor)
└── Send Message: "🟢 Sensor-Bot ist online"

Sub-Action: Send to Client

Pfad: Streamer.bot → WebSocket → Send (oder ähnlich)

Feld Wert
Client (welcher)
Data {"command":"requestUpdate"}

So fordert SB Daten beim externen Server an.

Reconnect-Verhalten

Wenn der externe Server kurz weg ist, will SB nicht permanent Failed-Connect-Logs spammen. Mit Reconnect Delay = 5000ms versucht SB alle 5s neu zu verbinden. Bei Erfolg → Trigger "Client Opened".

Mehrere Clients parallel

Du kannst N WS-Clients zu N Servern haben. Jeder mit eigenem Namen. Im Trigger-Dialog filterst du auf den passenden.

Häufige Fallen

  • Falsche URL-Schemaws:// für unverschlüsselt, wss:// für TLS. Nicht verwechseln
  • Server erwartet bestimmten Sub-Protocol — manche WS-Server brauchen WebSocket-Protocol Header. SB-Client kann das eingeschränkt
  • Reconnect-Storm — wenn Server permanently down, schreibt SB jede 5s ins Log. Mit längerem Delay zähmen
  • TLS-Zertifikat — bei wss:// braucht's gültiges Zertifikat. Self-signed kann scheitern
  • Message-Format — der Server muss valide Strings senden, sonst kommt nichts in %data%

Quellen