Echtzeit-Übertragung von Access-Events an WordPress via WebSocket-Gateway

Warum WebSocket?

Wenn Du Daten aus Access an WordPress senden willst, denkst Du wahrscheinlich an REST oder Mail.
Aber für Live-Daten (Statusänderungen, Push-Nachrichten, Log-Events) ist das zu langsam.
WebSocket kann’s besser: dauerhaft offen, reaktiv, direkt.

Mit einem kleinen Gateway zwischen Access und WordPress bekommst Du Live-Kommunikation – ohne polling, ohne Plugin-Massaker.

Architekturüberblick

KomponenteAufgabe
Access VBAsendet Events als JSON
WebSocket-Gatewayempfängt und verteilt Events
WordPress (JS)zeigt Daten live im Frontend

Das Gateway läuft unabhängig – z. B. als Node.js-Dienst auf einem Server oder Docker.
Access sendet dorthin, WordPress lauscht.

Schritt 1: WebSocket-Gateway (Node.js)

Ein minimales Beispiel:

const WebSocket = require('ws');
const wss = new WebSocket.Server({ port: 8080 });

wss.on('connection', function connection(ws) {
  console.log('Client verbunden');

  ws.on('message', function incoming(message) {
    console.log('Empfangen:', message);

    // Nachricht an alle Clients senden
    wss.clients.forEach(function each(client) {
      if (client.readyState === WebSocket.OPEN) {
        client.send(message);
      }
    });
  });
});

Das Gateway steht und wartet auf Nachrichten.
Port 8080 muss erreichbar sein – idealerweise via SSL-Proxypass.

Schritt 2: Access sendet Events an Gateway

VBA kann keine WebSockets.
Aber Du kannst über WinHttp.WinHttpRequest POSTs an ein kleines Hilfs-API schicken – das dann an den WebSocket broadcastet.
Oder: Du nutzt eine lokale CLI wie websocat oder curl.

Variante: Senden via Shell

Public Sub SendeEventAnWebSocketGateway(payload As String)
    Dim cmd As String
    cmd = "cmd /c echo " & payload & " | websocat.exe ws://localhost:8080"
    Shell cmd, vbHide
End Sub

Oder mit PowerShell:

Shell "powershell -Command ""$msg = '" & payload & "'; $ws = New-Object System.Net.WebSockets.ClientWebSocket; $uri = [uri]'ws://localhost:8080'; $ws.ConnectAsync($uri, $null).Wait();""" ' (verkürzt)

Oder Du nutzt ein Proxy-Gateway, das HTTP akzeptiert und WebSocket weiterleitet.

Schritt 3: Ereignis in Access erfassen

Private Sub Form_AfterUpdate()
    Dim json As String
    json = "{""event"":""update"",""table"":""tbl_Kunden"",""id"":" & Me.ID & "}"
    Call SendeEventAnWebSocketGateway(json)
End Sub

Oder bei Statusänderung:

If Me.Status <> Me.Status_Old Then
    Call SendeEventAnWebSocketGateway("{""event"":""status_change"",""status"":""" & Me.Status & """}")
End If

Schritt 4: WordPress-Frontend lauscht

Du brauchst ein wenig JavaScript. Kein Plugin nötig.

<script>
const ws = new WebSocket("wss://dein-gateway.de:8080");

ws.onmessage = function (event) {
  const data = JSON.parse(event.data);
  console.log("Live-Daten empfangen:", data);

  // Z. B. DOM aktualisieren
  if (data.event === "status_change") {
    document.getElementById("statusAnzeige").innerText = data.status;
  }
};
</script>

Das funktioniert auch in Elementor, ACF, WooCommerce – überall, wo Du Custom JS einbauen darfst.

Optional: Broadcast filtern

Du kannst im Gateway z. B. nur an bestimmte Clients senden:

if (message.includes('"event":"kundenbereich"')) {
  // nur an eingeloggte Kunden weiterleiten
}

Oder Du fügst client_id, role, channel im JSON mit.

Sicherheit & Performance

  • Gateway absichern (IP-Filter, Token, TLS)
  • Kein direkter DB-Zugriff über WebSocket
  • Nur Events – keine Massendaten
  • Access sendet nur selektiv
  • WordPress zeigt nur, was erlaubt ist

Wenn Du’s richtig baust, läuft das auch bei vielen gleichzeitigen Clients.

Die Schafgabe:

REST ist okay für Abfragen.
Aber wenn Access etwas meldet, will ich das in Echtzeit sehen – auf dem Handy, im Browser, auf’m Monitor im Lager.

WebSocket macht das möglich.
Access ist nicht modern – aber mit ein bisschen Gateway-Magie wird’s fast so agil wie Node.js.

Und das Schaf? Das sagt sofort Bescheid, wenn sich was ändert. Live.

Kategorien: