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
- ApplyUpdates: defina como True; toda vez que houver uma alteração, ela será transmitida para os clientes
- AutoSynchronize: defina como True; toda vez que um novo cliente se conectar ao servidor, o servidor enviará todos os registros (metadados e dados), para que o cliente obtenha as informações mais recentes do servidor.
- UpdateMode: defina como upWhereAll ou upWhereChanged. A diferença é que o primeiro envia todos os campos de um registro e o segundo apenas os campos alterados em uma atualização.
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
- ApplyUpdates: defina como True; toda vez que houver uma alteração, ela será enviada ao servidor.
- AutoSubscribe: defina como True; toda vez que um novo cliente se conectar ao servidor, o cliente se inscreve automaticamente para atualizações, exclusões e novos registros.
- UpdateMode: defina como upWhereAll ou upWhereChanged. A diferença é que o primeiro envia todos os campos de um registro e o segundo apenas os campos alterados em uma atualização.
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 ServerCrie um novo Dataset Protocol Server e configure usando as seguintes propriedades
- ApplyUpdates: defina como True; toda vez que houver uma alteração, ela será transmitida para os clientes
- AutoSynchronize: defina como False; aqui não é necessário definir como true, pois o cliente está conectado ao mesmo banco de dados que o servidor.
- UpdateMode: defina como 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 o Dataset Client
Crie um novo Dataset Protocol Client e configure usando as seguintes propriedades
- ApplyUpdates: defina como True; toda vez que houver uma alteração, ela será enviada ao servidor.
- AutoSubscribe: defina como True; toda vez que um novo cliente se conectar ao servidor, o cliente se inscreve automaticamente para atualizações, exclusões e novos registros.
- UpdateMode: defina como 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;