UpdateMode in DataSet Protocol

· Fonctionnalités

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

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

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 Dataset

Crée un nouveau Dataset Server protocol et configure-le en utilisant les propriétés suivantes

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

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;