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¶
- Settings → Servers/Clients → WebSocket Client
- Rechtsklick →
+ Add Client - 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 |
- 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.
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-Schema —
ws://für unverschlüsselt,wss://für TLS. Nicht verwechseln - Server erwartet bestimmten Sub-Protocol — manche WS-Server brauchen
WebSocket-ProtocolHeader. 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¶
- WebSocket Client Trigger: https://docs.streamer.bot/api/triggers/core/websocket/client
- WebSocket Setup: setup.md