delphi datasnap 服务端如何主动发信息给客户端

时间:2021-07-06 16:13:15
问题如题!

您可能会回答,通过客户端的回调函数,但是这个只是客户端在调用服务端的方法时传入的回调函数,这种情况还是客户端主动发起,服务器回应而已(我理解是这样,有误请指教)。

所以想知道服务端如何才能主动发信息给客户端,或者发信息给所有客户端(广播)?

12 个解决方案

#1


该回复于2012-06-25 10:04:20被版主删除

#2


没人回? 

各位随便回下吧,我结贴。

#3


不会,datasnap不懂

#4


没见过这种调用模式。实在要用就使用winsock。

#5


delphi xe2 里好像新增了这个功能
旧版不知有没有 
不过 变通方法应该有的吧 

#6


目前的做法是客户端用一个timer定时去取服务器的信息,这个太浪费网络资源了,不知道是否有更好的方法?

#7


一般的服务端,总是被动的
所谓服务器主动的推,其实也是客户端不停的拉——如邮件、web

#8


您可能会回答,通过客户端的回调函数,但是这个只是客户端在调用服务端的方法时传入的回调函数,这种情况还是客户端主动发起,服务器回应而已(我理解是这样,有误请指教)。
//---------------------------
客户端肯定是要主动吧,不然服务器端“回调”谁呢。

#9


服务端将调用放入一个数据结构中!
客户端定期查询服务端!

#10


不是可以注册通道吗?服务器可以广播的。

#11


服务器主动呼叫客户端示例:
ServerContainer.DSServer1.BroadcastMessage(szCName, TJSONString.Create(edit1.Text))

ServerContainer.DSServer1.BroadcastMessage(szCName, szCBackID, TJSONString.Create(Edit1.Text));


szCName:通道名称
szCBackID:CallBackID

#12


居然没给我分...

#1


该回复于2012-06-25 10:04:20被版主删除

#2


没人回? 

各位随便回下吧,我结贴。

#3


不会,datasnap不懂

#4


没见过这种调用模式。实在要用就使用winsock。

#5


delphi xe2 里好像新增了这个功能
旧版不知有没有 
不过 变通方法应该有的吧 

#6


目前的做法是客户端用一个timer定时去取服务器的信息,这个太浪费网络资源了,不知道是否有更好的方法?

#7


一般的服务端,总是被动的
所谓服务器主动的推,其实也是客户端不停的拉——如邮件、web

#8


您可能会回答,通过客户端的回调函数,但是这个只是客户端在调用服务端的方法时传入的回调函数,这种情况还是客户端主动发起,服务器回应而已(我理解是这样,有误请指教)。
//---------------------------
客户端肯定是要主动吧,不然服务器端“回调”谁呢。

#9


服务端将调用放入一个数据结构中!
客户端定期查询服务端!

#10


不是可以注册通道吗?服务器可以广播的。

#11


服务器主动呼叫客户端示例:
ServerContainer.DSServer1.BroadcastMessage(szCName, TJSONString.Create(edit1.Text))

ServerContainer.DSServer1.BroadcastMessage(szCName, szCBackID, TJSONString.Create(Edit1.Text));


szCName:通道名称
szCBackID:CallBackID

#12


居然没给我分...