UpdateMode en el protocolo DataSet

· Features

El subprotocolo Dataset de sgcWebSockets permite difundir los cambios de la base de datos a todos los clientes conectados. Desde sgcWebSockets 4.3.8, este protocolo admite 2 modos de actualización:

1. Replicate Table: el protocolo actualiza a los clientes del dataset cuando este ha cambiado.

2. Notify Updates: el protocolo notifica a los clientes cuando un dataset ha cambiado. 

Replicate Table 

Este modo trata de resolver un escenario común en el que una tabla se replica a todos los clientes conectados. Ejemplo: si tienes un servidor con una tabla de cotizaciones, quieres difundir los cambios de cotización a todos los clientes, pero no quieres que un cliente pueda conectarse a tu base de datos. Así, cada vez que hay un cambio en cualquier cotización, la información del registro se difunde a todos los clientes conectados. Cada cliente leerá el registro y actualizará su propia tabla.

Puedes consultar la carpeta Demos, demo SQLLite/MultipleDatabase.

Configurar el servidor Dataset

Crea un nuevo servidor del protocolo Dataset y configúralo con las siguientes propiedades

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; 

 Configurar el cliente Dataset

Create a new Dataset Protocol Client and configure using the following properties

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 

Este modo trata de resolver un escenario en el que servidor y clientes comparten una misma base de datos (servidor y clientes están conectados a la misma base de datos física) y los clientes quieren ser notificados cada vez que otro cliente realiza un cambio en un dataset.

Puedes consultar la carpeta Demos, demo SQLLite/SingleDatabase.

Configurar el servidor Dataset

Crea un nuevo servidor del protocolo Dataset y configúralo con las siguientes propiedades

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; 

Configurar el cliente Dataset

Create a new Dataset Protocol Client and configure using the following properties

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;