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
- ApplyUpdates: con True, cada cambio se difundirá a los clientes.
- AutoSynchronize: con True, cada vez que un nuevo cliente se conecte al servidor, este enviará todos los registros (metadatos y datos), de modo que el cliente obtenga la información más reciente.
- UpdateMode: ajusta a upWhereAll o upWhereChanged. La diferencia es que el primero envía todos los campos de un registro y el segundo solo los campos cambiados en una actualización.
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
- ApplyUpdates: con True, cada cambio se enviará al servidor.
- AutoSubscribe: con True, cada vez que un nuevo cliente se conecta al servidor, se suscribe automáticamente a las operaciones de actualización, borrado y nuevo registro.
- UpdateMode: ajusta a upWhereAll o upWhereChanged. La diferencia es que el primero envía todos los campos de un registro y el segundo solo los campos cambiados en una actualización.
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 DatasetCrea un nuevo servidor del protocolo Dataset y configúralo con las siguientes propiedades
- ApplyUpdates: con True, cada cambio se difundirá a los clientes.
- AutoSynchronize: con False; aquí no es necesario ponerlo a true, porque el cliente está conectado a la misma base de datos que el servidor.
- UpdateMode: ajusta a 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;
Configurar el cliente Dataset
Create a new Dataset Protocol Client and configure using the following properties
- ApplyUpdates: con True, cada cambio se enviará al servidor.
- AutoSubscribe: con True, cada vez que un nuevo cliente se conecta al servidor, se suscribe automáticamente a las operaciones de actualización, borrado y nuevo registro.
- 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;