Delphi XE DataSnap.DSServer[2] TDSServer[2] BroadcastMessage-广播消息
Delphi XE DataSnap.DSServer[2] TDSServer[2] BroadcastMessage-广播消息
向所有客户端回调发送消息。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 | function TDSServer . BroadcastMessage( const ChannelName: string ; const Msg: TJSONValue; const ArgType: Integer ): Boolean ; var I, Count: Integer ; CurrentPassed: Boolean ; TunnelItem: TDSCallbackTunnel; begin TMonitor . Enter(FCallbacks); try Count := FCallbacks . Count; if Count > 0 then begin Result := True ; for I := Count - 1 downto 0 do begin try TunnelItem := FCallbacks . Items[I]; CurrentPassed := True ; if TunnelItem . ListeningOn(ChannelName) then CurrentPassed := TunnelItem . BroadcastMessage(Msg . Clone as TJSONValue, ChannelName, CALLBACK_TIMEOUT, ArgType); except CurrentPassed := False ; FCallbacks . Delete(I); end ; Result := CurrentPassed and Result; end ; end else Result := false ; finally // Caller must pass clone because callee will free Msg . Free; TMonitor . Exit(FCallbacks); end ; end ; function TDSServer . BroadcastMessage( const ChannelName, CallbackId: string ; const Msg: TJSONValue; const ArgType: Integer ): Boolean ; var I, Count: Integer ; TunnelItem: TDSCallbackTunnel; begin TMonitor . Enter(FCallbacks); try Count := FCallbacks . Count; if Count > 0 then begin Result := True ; for I := Count - 1 downto 0 do begin TunnelItem := FCallbacks . Items[I]; if TunnelItem . ListeningOn(ChannelName) then try Result := TunnelItem . BroadcastMessage(CallbackId, Msg . Clone as TJSONValue) and Result; except Result := False ; FCallbacks . Delete(I); end ; end ; end else Result := false ; // Caller must pass clone of Msg because callee will free Msg . Free; finally TMonitor . Exit(FCallbacks); end ; end ; |
BroadcastMessage方法向所有客户端回调发送消息。BroadcastMessage有两个重载。使用ChannelName、Msg和ArgType参数调用第一个重载。
第二个重载向具有给定注册回调标识符的所有客户端回调发送消息。为此,调用中需要一个额外的CallbackId参数。
- ChannelName //表示通道回调的名称。
- CallbackId //表示回调标识符的字符串。
- Msg //包含要广播的消息的TJSONValue。
- ArgType //表示JSON参数。
创建时间:2022.11.04 更新时间:
博客园 滔Roy https://www.cnblogs.com/guorongtao 希望内容对你有所帮助,谢谢!
分类:
Delphi DataSnap
标签:
Delphi XE
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
2021-11-04 C[6] 预处理器
2021-11-04 PMI(采购经理人指数Purchasing Manager's Index)