sgcWebSockets Dataset サブプロトコルは、接続されているすべてのクライアントにデータベースの変更をブロードキャストできます。sgcWebSockets 4.3.8 からは、このプロトコルで 2 つの更新モードが使用できます。
1. テーブルの複製:データセットが変更されたとき、クライアントのデータセットを更新します。
2. 更新の通知:データセットが変更されたとき、クライアントに通知します。
テーブルの複製
このモードは、接続されているすべてのクライアントにテーブルが複製される一般的なシナリオを解決します。たとえば、サーバーに株価テーブルがある場合、株価の変更をすべてのクライアントにブロードキャストしたいが、クライアントがデータベースに直接接続することは避けたいケースです。株価に変更があるたびにレコード情報がブロードキャストされ、接続中のすべてのクライアントに届きます。各クライアントはレコードを読み取り、自身のテーブルを更新します。
Demos フォルダーの SQLLite/MultipleDatabase デモを確認してください。
Dataset サーバーの設定
新しい Dataset Protocol サーバーを作成し、以下のプロパティを設定してください。
- 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;
Dataset クライアントの設定
新しい Dataset Protocol クライアントを作成し、以下のプロパティを設定してください。
- 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 デモを確認してください。
Dataset サーバーの設定新しい Dataset Protocol サーバーを作成し、以下のプロパティを設定してください。
- 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;
Dataset クライアントの設定
新しい Dataset Protocol クライアントを作成し、以下のプロパティを設定してください。
- 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;