Met het sgcWebSockets Dataset-subprotocol kun je databasewijzigingen broadcasten naar alle verbonden clients. Vanaf sgcWebSockets 4.3.8 ondersteunt dit protocol 2 update-modi:
1. Replicate Table: protocol werkt dataset-clients bij wanneer een dataset is gewijzigd.
2. Notify Updates: protocol meldt clients wanneer een dataset is gewijzigd.
Replicate Table
Deze modus probeert een veelvoorkomend scenario op te lossen waarin een tabel wordt gerepliceerd voor alle verbonden clients, voorbeeld: als je een server hebt met een tabel met aandelenkoersen, wil je koerswijzigingen broadcasten naar alle clients, maar wil je niet dat een client verbinding kan maken met je database. Dus telkens wanneer er een wijziging is in een aandelenkoers, wordt de recordinformatie gebroadcast naar alle verbonden clients. Elke client leest het record en werkt zijn eigen tabel bij.
Je kunt in de Demos-map de SQLLite/MultipleDatabase-demo bekijken.
Dataset-server configureren
Maak een nieuwe Dataset Protocol Server aan en configureer deze met de volgende eigenschappen
- ApplyUpdates: stel in op True; telkens wanneer er een wijziging is, wordt deze naar clients gebroadcast
- AutoSynchronize: stel in op True; telkens wanneer een nieuwe client verbinding maakt met de server, stuurt de server alle records (metadata en data), zodat de client de nieuwste informatie van de server krijgt.
- UpdateMode: stel in op upWhereAll of upWhereChanged. Het verschil is dat de eerste alle velden van een record verstuurt en de tweede alleen de velden die zijn gewijzigd bij een update.
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 configureren
Maak een nieuwe Dataset Protocol Client aan en configureer deze met de volgende eigenschappen
- ApplyUpdates: stel in op True; telkens wanneer er een wijziging is, wordt deze naar de server verstuurd.
- AutoSubscribe: stel in op True; telkens wanneer een nieuwe client verbinding maakt met de server, abonneert de client zich automatisch op update, delete en nieuw record.
- UpdateMode: stel in op upWhereAll of upWhereChanged. Het verschil is dat de eerste alle velden van een record verstuurt en de tweede alleen de velden die zijn gewijzigd bij een update.
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
Deze modus probeert een scenario op te lossen waarin server en clients één enkele database delen (server en clients zijn verbonden met dezelfde fysieke database) en clients willen worden geïnformeerd telkens wanneer een andere client een wijziging heeft uitgevoerd op een dataset.
Je kunt in de Demos-map de SQLLite/SingleDatabase-demo bekijken.
Dataset-server configurerenMaak een nieuwe Dataset Protocol Server aan en configureer deze met de volgende eigenschappen
- ApplyUpdates: stel in op True; telkens wanneer er een wijziging is, wordt deze naar clients gebroadcast
- AutoSynchronize: stel in op False; hier hoeft dit niet op true te staan, omdat de client met dezelfde database verbonden is als de server.
- UpdateMode: stel in op upRefreshAll.
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 configureren
Maak een nieuwe Dataset Protocol Client aan en configureer deze met de volgende eigenschappen
- ApplyUpdates: stel in op True; telkens wanneer er een wijziging is, wordt deze naar de server verstuurd.
- AutoSubscribe: stel in op True; telkens wanneer een nieuwe client verbinding maakt met de server, abonneert de client zich automatisch op update, delete en nieuw record.
- UpdateMode: stel in op upRefreshAll.
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;