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à
- ApplyUpdates: imposta a True, ogni volta che si verifica una modifica, questa viene trasmessa in broadcast ai client
- AutoSynchronize: imposta a True, ogni volta che un nuovo client si connette al server, il server invia tutti i record (metadati e dati), in modo che il client ottenga le informazioni più recenti dal server.
- UpdateMode: imposta a upWhereAll o upWhereChanged. La differenza è che il primo invia tutti i campi di un record, il secondo solo i campi modificati in un update.
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à
- ApplyUpdates: imposta a True, ogni volta che si verifica una modifica, questa viene inviata al server.
- AutoSubscribe: imposta a True, ogni volta che un nuovo client si connette al server, il client si iscrive automaticamente agli update, eliminare e nuovi record.
- UpdateMode: imposta a upWhereAll o upWhereChanged. La differenza è che il primo invia tutti i campi di un record, il secondo solo i campi modificati in un update.
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 DatasetCrea un nuovo Dataset Protocol Server e configuralo utilizzando le seguenti proprietà
- ApplyUpdates: imposta a True, ogni volta che si verifica una modifica, questa viene trasmessa in broadcast ai client
- AutoSynchronize: imposta a False, qui non è necessario impostare a true, perché il client è connesso allo stesso database del server.
- UpdateMode: imposta 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;
Configurare il client Dataset
Crea un nuovo Dataset Protocol Client e configuralo utilizzando le seguenti proprietà
- ApplyUpdates: imposta a True, ogni volta che si verifica una modifica, questa viene inviata al server.
- AutoSubscribe: imposta a True, ogni volta che un nuovo client si connette al server, il client si iscrive automaticamente agli update, eliminare e nuovi record.
- UpdateMode: imposta a 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;