Xe2DataSnap回调基本方法总结

更新时间:2023-10-03 00:53:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

服务端:

1. ServerContainer中两个元件,TDSServer以及TDSTCPServerTransport 2. 定义通道。如:

Const

DEMOChannel = ‘DemoChannel’; 3. 获取通道中所有回调ID方法:

ServerContainer1.DSServer1.GetAllChannelCallbackId(DEMOChannel); 4. 服务器回叫所有注册的用户方法(与通道、回调ID、传送的信息有关)如:

Var

vMessage :TJSONString; Begin

vMessage := TJSONString.Create(mmMessage.Lines.Text);

ServerContainer1.DSServer1.BroadcastMessage(DEMOChannel, vMessage); End; 原形是:

functionBroadcastMessage(constChannelName:

String;

constMsg:

TJSONValue;

constArgType: Integer = TDBXCallback.ArgJson): boolean; overload;

functionBroadcastMessage(constChannelName: String; constCallbackId: String; constMsg: TJSONValue; constArgType: Integer = TDBXCallback.ArgJson): boolean; overload;

实际服务器回叫用户是执行用户注册类(如:TDemoCallback)对应的虛拟方法Execute,传送给用户端的信息则由参数Msg封裝。

客户端:

1. 两个主要组件:TSQLConnection,TDSClientCallbackChannelManager。分别用于连接服

务器和客户端向服务器注册;TDSClientCallbackChannelManager要指明通道名(ChannelName)、通信类型(CommunicationProtocol=TCP/IP)、服务器地址(DSHostname)及端口(DSPort)。

2. 定义从TDBXCallback衍生类如下:

type

TDemoCallback = class(TDBXCallback) public

function Execute(constArg: TJSONValue): TJSONValue; override; end;

3. 复载虚拟方法Execute如下:

//////////////////////////////////////////////////////////////////////////// ///当DataSnap服务器回叫用户端时就会执行虚拟方法Execute;

///服务器可以把务器端传送到用户端的信息封装在Execute的参数Arg中 ///用TThread类別的方法Synchronize来更新用户端的使用者介面。 ///////////////////////////////////////////////////////////////////////////////// functionTDemoCallback.Execute(constArg: TJSONValue): TJSONValue; var

sDemoMessage : String; begin

Result :=TJSONTrue.Create; if (Arg is TJSONString) then begin

sDemoMessage := TJSONString(Arg).Value; TThread.Synchronize(nil, procedure begin

mm.Lines.Text:= sDemoMessage; end); end; end; 4. 连接DataSnap服务器,建立一个回调识別ID,如下:

procedureTFormMainClient.SetupTask; begin

if not SQLConnection1.Connected then begin

SQLConnection1.Connected := True; end;

callbackId := DateTimeToStr(Now); //根据目前的时间建立一个独特的识別ID Send; 5. 向DataSnap服务器注册这个回叫用户端,如下:

procedureTFormMainClient.BtnStartClick(Sender: TObject); begin

SetupTask; //(连接服务器) MM:= mmDemoMessage; //(回调信息显示的地方)

DSClientCallbackChannelManager1.RegisterCallback(callbackId, TDemoCallback.Create); //注册用户端通过DSClientCallbackChannelManager组件 end;

注意:回叫用户端向服务器注册的信息有:回叫通道、回叫ID、回叫执行方法Execute 其中回叫通道由TDSClientCallbackChannelManager组件指定。

6. 停止用户端回叫如下:

procedureTFormMainClient.BtnStopClick(Sender: TObject); begin

DSClientCallbackChannelManager1.UnregisterCallback(callbackId); end;

停止用户端回叫的信息有:回叫通道、回叫ID

当然,客户端可以定义多个TDBXCallback衍生类,每个都有自己的虚拟方法Execute,回叫用户端向服务器注册时,可以选择不同的回叫执行方法Execute了。

本文来源:https://www.bwwdw.com/article/pcod.html

Top