Datasnap客户端回调连接KeepAlive不起作用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Datasnap客户端回调连接KeepAlive不起作用相关的知识,希望对你有一定的参考价值。

我跟着Delphi Labs: Datasnap XE - Callbacks的指南,Callbacks似乎运作良好。然而,让客户端闲置一个多小时 - 似乎导致客户回调停止工作。我改变了服务器DSTCPServerTransport.KeepAliveEnabled.KeepAliveInterval.KeepAliveTime - 但它没有任何帮助。

有谁知道如何让客户加班加点?

1https://edn.embarcadero.com/article/41374

答案

我还在几个应用程序中使用Datasnap回调。我的解决方案是设置一个计时器,用于测量使用BroadCastToChannel发送的特定消息(例如'* ping')需要多长时间才能被同一应用程序中同一通道上的已注册回调接收。我在移动应用程序中允许5秒钟,如果在那段时间没有收到ping的回声,我认为我的回调不再有效。我做我称之为“回收回调”。也就是说,我取消注册前一个回调(如果失败则不会导致错误)并注册一个新回调(我的回调ID是基于时间戳的,因此它们都是唯一的)。我的“ping计时器”以1分钟的间隔运行,这通常足以满足我的应用程序。这个解决方案会在这里提供很多代码,所以我希望我的描述可以帮助您找到适合您的解决方案。如果您不确定,请提出问题。

以上是关于Datasnap客户端回调连接KeepAlive不起作用的主要内容,如果未能解决你的问题,请参考以下文章

delphi datasnap 心跳包

Delphi Tokyo 10.2 Windows 7上的TDSRestConnection DataSnap连接

DataSnap Session expired处理。

nginx之keepalive与pipeline

网络编程-keepalive

TCP_KEEPALIVE机制简述