Le sous-protocole Dataset de sgcWebSockets permet de diffuser les modifications de base de données à tous les clients connectés. Depuis sgcWebSockets 4.3.8, ce protocole propose 2 modes de mise à jour :
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é.
Réplication de table
Ce mode tente de résoudre un scénario courant où une table est répliquée sur tous les clients connectés. Par exemple, si tu as un serveur avec une table de cotations boursières et que tu veux diffuser les changements de cours à tous les clients, mais sans qu'un client puisse se connecter à ta base de données : ainsi, chaque fois qu'il y a un changement sur une cotation, l'information de l'enregistrement sera diffusée à tous les clients connectés. Chaque client lit l'enregistrement et met à jour sa propre 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 : à régler sur True ; à chaque changement, celui-ci sera diffusé aux clients.
- AutoSynchronize : à régler sur True ; chaque fois qu'un nouveau client se connecte au serveur, le serveur enverra tous les enregistrements (métadonnées et données), afin que le client obtienne les dernières informations depuis le serveur.
- UpdateMode : à régler sur 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 : à régler sur True ; à chaque changement, celui-ci sera envoyé au serveur.
- AutoSubscribe : à régler sur True ; chaque fois qu'un nouveau client se connecte au serveur, il s'abonne automatiquement aux mises à jour, suppressions et nouveaux enregistrements.
- UpdateMode : à régler sur 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;
Notification des mises à jour
Ce mode tente de résoudre un scénario où le serveur et les clients partagent une base de données unique (le serveur et les clients sont connectés à la même base de données physique) et où les clients veulent être notifiés à chaque fois qu'un autre client effectue un changement sur un dataset.
Tu peux consulter le dossier Demos, démo SQLLite/SingleDatabase.
Configurer le serveur DatasetCrée un nouveau Dataset Server protocol et configure-le en utilisant les propriétés suivantes :
- ApplyUpdates : à régler sur True ; à chaque changement, celui-ci sera diffusé aux clients.
- AutoSynchronize : à régler sur False ; il n'est pas nécessaire de le mettre à true, car le client est connecté à la même base de données que le serveur.
- UpdateMode : à régler sur 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 : à régler sur True ; à chaque changement, celui-ci sera envoyé au serveur.
- AutoSubscribe : à régler sur True ; chaque fois qu'un nouveau client se connecte au serveur, il s'abonne automatiquement aux mises à jour, suppressions et nouveaux enregistrements.
- UpdateMode : à régler sur 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;