sgcWebSockets Dataset 서브프로토콜을 사용하면 연결된 모든 클라이언트에 데이터베이스 변경 사항을 브로드캐스트할 수 있어요. sgcWebSockets 4.3.8부터 이 프로토콜은 두 가지 업데이트 모드를 지원해요.
1. Replicate Table: 데이터셋이 변경되면 프로토콜이 데이터셋 클라이언트를 업데이트해요.
2. Notify Updates: 데이터셋이 변경되면 프로토콜이 클라이언트에 알려요.
Replicate Table
이 모드는 연결된 모든 클라이언트에 테이블이 복제되는 일반적인 시나리오를 해결해요. 예를 들어, 주식 시세 테이블이 있는 서버가 있고 모든 클라이언트에 주식 변경 사항을 브로드캐스트하고 싶지만 클라이언트가 데이터베이스에 직접 연결하지 않도록 하고 싶을 때 사용해요. 따라서 주식 시세에 변경이 있을 때마다 레코드 정보가 모든 연결된 클라이언트에 브로드캐스트돼요. 모든 클라이언트는 레코드를 읽고 자체 테이블을 업데이트해요.
Demos 폴더의 SQLLite/MultipleDatabase 데모에서 확인할 수 있어요.
Dataset 서버 구성
새 Dataset 프로토콜 서버를 만들고 다음 속성으로 구성해요.
- 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 프로토콜 클라이언트를 만들고 다음 속성으로 구성해요.
- 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;
Notify Updates
이 모드는 서버와 클라이언트가 단일 데이터베이스를 공유하는 시나리오를 해결해요(서버와 클라이언트가 동일한 물리적 데이터베이스에 연결됨). 다른 클라이언트가 데이터셋을 변경할 때마다 클라이언트가 알림을 받고 싶을 때 사용해요.
Demos 폴더의 SQLLite/SingleDatabase 데모에서 확인할 수 있어요.
Dataset 서버 구성새 Dataset 프로토콜 서버를 만들고 다음 속성으로 구성해요.
- 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 프로토콜 클라이언트를 만들고 다음 속성으로 구성해요.
- 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;