Das sgcWebSockets-Dataset-Subprotokoll erlaubt es, Datenbankänderungen an alle verbundenen Clients zu broadcasten. Ab sgcWebSockets 4.3.8 unterstützt dieses Protokoll 2 Update-Modi:
1. Replicate Table: Das Protokoll aktualisiert Dataset-Clients, wenn sich ein Dataset geändert hat.
2. Notify Updates: Das Protokoll benachrichtigt Clients, wenn sich ein Dataset geändert hat.
Replicate Table
Dieser Modus löst ein verbreitetes Szenario, in dem eine Tabelle für alle verbundenen Clients repliziert wird. Beispiel: Hast du einen Server mit einer Tabelle mit Aktienkursen, willst du Aktien-Änderungen broadcasten an alle Clients, aber du willst nicht, dass sich ein Client direkt mit deiner Datenbank verbindet. Jedes Mal, wenn es eine Änderung bei einem Aktienkurs gibt, werden die Datensatz-Informationen an alle verbundenen Clients broadcastet. Jeder Client liest den Datensatz und aktualisiert seine eigene Tabelle.
Schau im Demos-Ordner ins Demo SQLLite/MultipleDatabase.
Dataset-Server konfigurieren
Erstelle einen neuen Dataset-Protocol-Server und konfiguriere ihn über die folgenden Eigenschaften
- ApplyUpdates: auf True setzen - jede Änderung wird an die Clients broadcastet
- AutoSynchronize: auf True setzen - jedes Mal, wenn ein neuer Client sich verbindet, sendet der Server alle Datensätze (Metadaten und Daten), sodass der Client den aktuellen Stand vom Server erhält.
- UpdateMode: auf upWhereAll oder upWhereChanged setzen. Der Unterschied: Erste sendet alle Felder eines Datensatzes, zweite nur die Felder, die sich bei einem Update geändert haben.
oServer := TsgcWebSocketServer.Create(nil); oProtocolDataset := TsgcWSPServer_Dataset.Create(nil); oProtocolDataset.Server := oServer; oProtocolDataset.Dataset := <...your dataset..>; oProtocolDataset.ApplyUpdates := true; oProtocolDataset.AutoSynchronize := true; oProtocolDataset.NotifyUpdates := true; oProtocolDataset.UpdateMode := upWhereAll; oServer.Port := 80; oServer.Active := true;
Dataset-Client konfigurieren
Erstelle einen neuen Dataset-Protocol-Client und konfiguriere ihn über die folgenden Eigenschaften
- ApplyUpdates: auf True setzen - jede Änderung wird an den Server gesendet.
- AutoSubscribe: auf True setzen - jedes Mal, wenn ein neuer Client sich verbindet, abonniert der Client automatisch Update, Delete und neue Datensätze.
- UpdateMode: auf upWhereAll oder upWhereChanged setzen. Der Unterschied: Erste sendet alle Felder eines Datensatzes, zweite nur die Felder, die sich bei einem Update geändert haben.
oClient := TsgcWebSocketClient.Create(nil); oProtocolDataset := TsgcWSPClient_Dataset.Create(nil); oProtocolDataset.Client := oClient; oProtocolDataset.Dataset := <...your dataset..>; oProtocolDataset.ApplyUpdates := true; oProtocolDataset.AutoSubscribe := true; oProtocolDataset.NotifyUpdates := true; oProtocolDataset.UpdateMode := upWhereAll; oClient.Host := '127.0.0.1'; oClient.Port := 80; oClient.Active := true;
Notify Updates
Dieser Modus löst ein Szenario, in dem sich Server und Clients eine einzige Datenbank teilen (Server und Clients sind mit derselben physischen Datenbank verbunden) und Clients benachrichtigt werden wollen, wenn ein anderer Client eine Änderung an einem Dataset vorgenommen hat.
Schau im Demos-Ordner ins Demo SQLLite/SingleDatabase.
Dataset-Server konfigurierenErstelle einen neuen Dataset-Protocol-Server und konfiguriere ihn über die folgenden Eigenschaften
- ApplyUpdates: auf True setzen - jede Änderung wird an die Clients broadcastet
- AutoSynchronize: auf False setzen - hier muss es nicht auf true stehen, weil der Client mit derselben Datenbank wie der Server verbunden ist.
- UpdateMode: auf upRefreshAll setzen.
oServer := TsgcWebSocketServer.Create(nil); oProtocolDataset := TsgcWSPServer_Dataset.Create(nil); oProtocolDataset.Server := oServer; oProtocolDataset.Dataset := <...your dataset..>; oProtocolDataset.ApplyUpdates := true; oProtocolDataset.AutoSynchronize := false; oProtocolDataset.NotifyUpdates := true; oProtocolDataset.UpdateMode := upRefreshAll; >oServer.Port := 80; oServer.Active := true;
Dataset-Client konfigurieren
Erstelle einen neuen Dataset-Protocol-Client und konfiguriere ihn über die folgenden Eigenschaften
- ApplyUpdates: auf True setzen - jede Änderung wird an den Server gesendet.
- AutoSubscribe: auf True setzen - jedes Mal, wenn ein neuer Client sich verbindet, abonniert der Client automatisch Update, Delete und neue Datensätze.
- UpdateMode: auf upRefreshAll setzen.
oClient := TsgcWebSocketClient.Create(nil); oProtocolDataset := TsgcWSPClient_Dataset.Create(nil); oProtocolDataset.Client := oClient; oProtocolDataset.Dataset := <...your dataset..>; oProtocolDataset.ApplyUpdates := true; oProtocolDataset.AutoSubscribe := true; oProtocolDataset.NotifyUpdates := true; oProtocolDataset.UpdateMode := upRefreshAll; oClient.Host := '127.0.0.1'; oClient.Port := 80; oClient.Active := true;