首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

DA EventRespository的应用

Posted on 2011-08-09 15:15  colincode  阅读(460)  评论(0编辑  收藏  举报

关于DA的事件的应用于理解

例子 FIleextendedtransfer

客户端 向服务器端提交 服务端时候,服务端可以同时让事件进行触发的操作。

事件触发以后,会向自己或者其他的客户端执行特殊的 客户端的部分的指令,如 download....

服务器端是被动触发,触发后执行客户端指令。

比较有意思。

我们还可以对照聊天的例子。

httpchat的例子

{ 服务端的代码}

procedure TChatServerService.Talk(const Message: String);
var
ev: IChatEvents_Writer;
begin
ev := (EventRepository as IChatEvents_Writer);
ev.ExcludeSender := False;  

//不包含自己,也就是session执行的时候,让发送指令的该客户也执行
ev.Message(session.SessionID, Session['nick'], '', Message);

//该部分的指令会在客户端执行相应的方法
end;

{ 客户端的代码}

procedure TSuperTCPChannelChat_ClientMainForm.Message(const From, Target, Message: string);
var
Data: array of string;
begin
SetLength(Data, 3);
Data[0] := From;
Data[1] := Target;
Data[2] := Message;
SendMessage(Handle, WM_USER, Longint(stMessage), Longint(Data));
end;