数据集协议中的 UpdateMode

· 功能

sgcWebSockets 数据集子协议允许将数据库更改广播给所有已连接的客户端。从 sgcWebSockets 4.3.8 开始,该协议支持 2 种更新模式:

1. 复制表:当数据集发生更改时,协议更新数据集客户端。

2. 通知更新:当数据集发生更改时,协议通知客户端。 

复制表 

此模式旨在解决一个常见场景:表被复制到所有已连接的客户端,例如,如果您的服务器有一个股票报价表,您想广播股票变化给所有客户端,但不希望客户端直接连接到您的数据库。因此,每当任何股票报价发生变化时,记录信息将被广播给所有已连接的客户端。每个客户端将读取记录更新其自己的表。

您可以在 Demos 文件夹中查看 SQLLite/MultipleDatabase 演示。

配置数据集服务器

创建新的数据集协议服务器并使用以下属性配置

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; 

 配置数据集客户端

创建新的数据集协议客户端并使用以下属性配置

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; 

通知更新 

此模式旨在解决服务器客户端共享单一数据库(服务器和客户端连接到同一物理数据库)的场景,客户端希望在其他客户端对数据集进行任何更改时收到通知。

您可以在 Demos 文件夹中查看 SQLLite/SingleDatabase 演示。

配置数据集服务器

创建新的数据集协议服务器并使用以下属性配置

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; 

配置数据集客户端

创建新的数据集协议客户端并使用以下属性配置

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;