UpdateMode no protocolo DataSet

· Recursos

O Dataset Subprotocol do sgcWebSockets permite transmitir alterações no banco de dados para todos os clientes conectados. A partir do sgcWebSockets 4.3.8, este protocolo oferece 2 modos de atualização:

1. Replicar tabela: o protocolo atualiza os clientes do dataset quando um dataset é alterado.

2. Notificar atualizações: o protocolo notifica os clientes quando um dataset é alterado. 

Replicar tabela 

Este modo tenta resolver um cenário comum em que uma tabela é replicada para todos os clientes conectados. Por exemplo, se você tem um servidor com uma tabela de cotações de ações, quer transmitir as mudanças das ações para todos os clientes, mas não quer que um cliente se conecte diretamente ao seu banco de dados. Assim, toda vez que há uma alteração em qualquer cotação, as informações do registro são transmitidas para todos os clientes conectados. Cada cliente lê o registro e atualiza sua própria tabela.

Você pode conferir na pasta Demos, demo SQLLite/MultipleDatabase.

Configurar o Dataset Server

Crie um novo Dataset Protocol Server e configure usando as seguintes propriedades

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 o Dataset Client

Crie um novo Dataset Protocol Client e configure usando as seguintes propriedades

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; 

Notificar atualizações 

Este modo tenta resolver um cenário em que servidor e clientes compartilham um único banco de dados (servidor e clientes estão conectados ao mesmo banco de dados físico) e os clientes querem ser notificados sempre que outro cliente fizer alguma alteração em um dataset.

Você pode conferir na pasta Demos, demo SQLLite/SingleDatabase.

Configurar o Dataset Server

Crie um novo Dataset Protocol Server e configure usando as seguintes propriedades

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 o Dataset Client

Crie um novo Dataset Protocol Client e configure usando as seguintes propriedades

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;