sgcWebSockets 数据集子协议允许将数据库更改广播给所有已连接的客户端。从 sgcWebSockets 4.3.8 开始,该协议支持 2 种更新模式:
1. 复制表:当数据集发生更改时,协议更新数据集客户端。
2. 通知更新:当数据集发生更改时,协议通知客户端。
复制表
此模式旨在解决一个常见场景:表被复制到所有已连接的客户端,例如,如果您的服务器有一个股票报价表,您想广播股票变化给所有客户端,但不希望客户端直接连接到您的数据库。因此,每当任何股票报价发生变化时,记录信息将被广播给所有已连接的客户端。每个客户端将读取记录并更新其自己的表。
您可以在 Demos 文件夹中查看 SQLLite/MultipleDatabase 演示。
配置数据集服务器
创建新的数据集协议服务器并使用以下属性配置
- ApplyUpdates:设置为 True,每次有更改时,该更改将被广播到客户端。
- AutoSynchronize:设置为 True,每次新客户端连接到服务器时,服务器将发送所有记录(元数据和数据),因此客户端将从服务器获取最新信息。
- UpdateMode:设置为 upWhereAll 或 upWhereChanged。区别在于前者发送记录的所有字段,后者只发送更新中更改的字段。
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;
配置数据集客户端
创建新的数据集协议客户端并使用以下属性配置
- ApplyUpdates:设置为 True,每次有更改时,该更改将被发送到服务器。
- AutoSubscribe:设置为 True,每次新客户端连接到服务器时,客户端自动订阅更新、删除和新记录。
- UpdateMode:设置为 upWhereAll 或 upWhereChanged。区别在于前者发送记录的所有字段,后者只发送更新中更改的字段。
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 演示。
配置数据集服务器创建新的数据集协议服务器并使用以下属性配置
- ApplyUpdates:设置为 True,每次有更改时,该更改将被广播到客户端。
- AutoSynchronize:设置为 False,此处不需要设置为 true,因为客户端连接到与服务器相同的数据库。
- UpdateMode:设置为 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;
配置数据集客户端
创建新的数据集协议客户端并使用以下属性配置
- ApplyUpdates:设置为 True,每次有更改时,该更改将被发送到服务器。
- AutoSubscribe:设置为 True,每次新客户端连接到服务器时,客户端自动订阅更新、删除和新记录。
- UpdateMode:设置为 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;