delphi - Datasnap 客户端回调连接 KeepAlive 不起作用
问题描述
我遵循了Delphi Labs 中的指南:Datasnap XE - Callbacks,Callbacks 似乎工作得很好。然而,让客户端闲置超过一个小时 - 似乎会导致客户端回调停止工作。我更改了服务器DSTCPServerTransport.KeepAliveEnabled
, .KeepAliveInterval
, .KeepAliveTime
-- 但它没有任何帮助。
有谁知道我怎样才能让客户超时连接?
解决方案
我还在几个应用程序中使用 Datasnap 回调。我的解决方案是设置一个计时器来测量使用发送的特定消息(例如'*ping')需要多长时间BroadCastToChannel
由同一应用程序中同一通道上的注册回调接收。我在移动应用程序中允许 5 秒,如果在那段时间内没有收到我的 ping 回声,我认为我的回调不再起作用。我做我所谓的“回收回调”。也就是说,我取消注册前一个回调(如果失败不会导致错误)并注册一个新回调(我的回调 id 是基于时间戳的,因此它们都是唯一的)。我的“ping 计时器”每隔 1 分钟运行一次,这对于我的应用程序来说已经足够了。这个解决方案需要在这里展示很多代码,所以我希望我的描述能帮助您找到适合您的解决方案。如果您不确定,请提出问题。
推荐阅读
- python - PLC modbus [WinError 10054]:现有连接被远程主机强行关闭
- android - 为什么Activity返回前台后Bitmap会被回收?
- react-native - React-Native:从 Reducer 返回后未获取状态数据
- ios - 如何停止特定 ViewController 上的“screen_view”事件
- java - 在循环 200 万次的循环中使用最终字符串的最有效方法是什么?
- mysql - 案例条件MySql中的内部连接表
- installshield - InstallShield 2016 Pro,服务不会安装多个功能
- machine-learning - 我应该在最后一个卷积层中使用 conv 3x3 进行语义分割吗?
- javascript - 文本字段使用 react-select 自动建议用户名
- node.js - 在 Nodejs 中找不到模块