UpdateMode nel protocollo DataSet

· Funzionalità

Il sottoprotocollo Dataset di sgcWebSockets consente di trasmettere in broadcast le modifiche al database a tutti i client connessi. A partire da sgcWebSockets 4.3.8 questo protocollo supporta 2 modalità di update:

1. Replicate Table: il protocollo aggiorna il dataset del client quando un dataset è cambiato.

2. Notify Updates: il protocollo notifica al client quando un dataset è cambiato. 

Replicate Table 

Questa modalità prova a risolvere uno scenario comune in cui una tabella viene replicata per tutti i client connessi. Ad esempio, se hai un server con una tabella di stock quotes, vuoi trasmettere in broadcast le modifiche a tutti i client, ma non vuoi che un client possa connettersi al tuo database. Quindi, ogni volta che si verifica una modifica in una qualsiasi stock quote, le informazioni del record vengono trasmesse in broadcast a tutti i client connessi. Ogni client legge il record e aggiorna la propria tabella.

Puoi verificarlo nella cartella Demos, demo SQLLite/MultipleDatabase.

Configurare il server Dataset

Crea un nuovo Dataset Protocol Server e configuralo utilizzando le seguenti proprietà

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; 

 Configurare il client Dataset

Crea un nuovo Dataset Protocol Client e configuralo utilizzando le seguenti proprietà

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 

Questa modalità prova a risolvere uno scenario in cui server e client condividono un singolo database (server e client sono connessi allo stesso database fisico) e il client vuole essere notificato ogni volta che un altro client ha apportato una qualsiasi modifica a un dataset.

Puoi verificarlo nella cartella Demos, demo SQLLite/SingleDatabase.

Configurare il server Dataset

Crea un nuovo Dataset Protocol Server e configuralo utilizzando le seguenti proprietà

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; 

Configurare il client Dataset

Crea un nuovo Dataset Protocol Client e configuralo utilizzando le seguenti proprietà

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;