Le sous-protocole Dataset de sgcWebSockets permet de diffuser les modifications de base de données à tous les clients connectés. From sgcWebSockets 4.3.8 ce protocole permet 2 mode de mise à jours:
1. Replicate Table : le protocole met à jour les clients dataset lorsqu'un dataset a changé.
2. Notify Updates : le protocole notifie les clients lorsqu'un dataset a changé.
Replicate Table
Ce mode tente de résoudre un scénario courant où un table est replicated pour tous les clients connectés, example, si tu as un serveur avec a stock quotes table, tu want broadcast stock changes to tous clients, mais tu ne veux pas qu'un client puisse se connecter à ta base de données. So, chaque fois il y a a change in aucune stock quotes, le record information sera broadcasted to tous connected clients. Every client va read le record et update his own table.
Tu peux consulter le dossier Demos, démo SQLLite/MultipleDatabase.
Configurer le serveur Dataset
Crée un nouveau Dataset Server protocol et configure-le en utilisant les propriétés suivantes
- ApplyUpdates: set to True, chaque fois qu'il y a un changement, ce changement sera diffusé aux clients
- AutoSynchronize: set to True, chaque fois qu'un nouveau client se connecte au serveur, le serveur va envoyer tous les enregistrements (métadonnées et données), donc le client va obtenir les dernières informations depuis le serveur.
- UpdateMode: set to upWhereAll ou upWhereChanged. La différence est que le premier envoie tous les champs d'un enregistrement et le second uniquement les champs modifiés lors d'une mise à jour.
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;
Configurer le client Dataset
Crée un nouveau Dataset Client protocol et configure-le en utilisant les propriétés suivantes
- ApplyUpdates: set to True, chaque fois qu'il y a un changement, ce sera envoyé à server.
- AutoSubscribe: set to True, chaque fois qu'un nouveau client se connecte au serveur, client subscribe automatically to update, delete et nouveau record.
- UpdateMode: set to upWhereAll ou upWhereChanged. La différence est que le premier envoie tous les champs d'un enregistrement et le second uniquement les champs modifiés lors d'une mise à jour.
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
This mode tries to solve an scenario où server et clients shsont un single database (serveur et clients are connected vers le same physical database) et clients want to be notified chaque fois other client a done aucune change sur un dataset.
Tu peux check in Demos folder, SQLLite/SingleBase de données demo.
Configurer le serveur DatasetCrée un nouveau Dataset Server protocol et configure-le en utilisant les propriétés suivantes
- ApplyUpdates: set to True, chaque fois qu'il y a un changement, ce changement sera diffusé aux clients
- AutoSynchronize: set to False, here n'est pas needed to set to true, because client est connected vers le same base de données than server.
- UpdateMode: set to 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;
Configurer le client Dataset
Crée un nouveau Dataset Client protocol et configure-le en utilisant les propriétés suivantes
- ApplyUpdates: set to True, chaque fois qu'il y a un changement, ce sera envoyé à server.
- AutoSubscribe: set to True, chaque fois qu'un nouveau client se connecte au serveur, client subscribe automatically to update, delete et nouveau record.
- UpdateMode: set to 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;