2

我正在使用 4D 移动设备从 Wakanda Enterprise v11 连接到 4D 服务器并连接到远程数据存储。我尊重 60 分钟的超时值。

在 4D 中on 4D Mobile Authentication Method,所有数据都很好($1包含用户名和$2密码)。

当不活动超过 60 分钟并尝试发送 wakanda 请求时,on 4D Mobile Authentication Method在 4D 上$1,, $2,.. 值为空并返回“错误”。

如何在从 wakanda 服务器功能重新启动/重新加载 wakanda 服务器/模型的情况下更新/重新连接连接,或者如何将超时设置为无限制?

我正在尝试使用 4D Server 恢复连接

  • mergeoutsidecatalog()
  • 向 4D 发送休息请求
  • 等等

没有任何效果

4

5 回答 5

1

状态的文档mergeoutsidecatalog()

timeout(仅限基于对象的语法):4D 服务器上客户端连接的超时(传递一个表示分钟的数字)。每个需要对外部 4D 数据库进行 REST 访问的客户端查询都将在 4D 服务器端创建或使用客户端连接(进程),同时保持客户端上下文。默认情况下,连接会在 60 分钟不活动后关闭。您可以根据需要将此超时时间减少到 15 分钟。

因此,要保持连接处于活动状态,您需要在超时过去之前发送查询。

问题是,一旦超时,您将无法mergeoutsidecatalog()再次调用;它只能在加载模型对象时完成,因此您需要重新启动 Wakanda。此行为记录在 mergeoutsidecatalog()文档中:

该方法必须在当前 Model 对象加载时调用,即在 Model.js 文件的上下文中。

检查currentSession()可能有助于您隔离最终用户会话何时过期,但我不认为将用户重定向到登录页面会有所帮助,因为 Wakanda 服务器将无法在mergeoutsidecatalog()不重新加载模型的情况下调用(即重新启动 Wakanda)。

如果您希望无限期地保持 4D 和 Wakanda 之间的连接,那么您需要:

a)将超时增加到一个非常大的数字(也许尝试 0 以查看它是否禁用超时)

b)通过在超时过去之前发送查询来维持与 4D 服务器的心跳连接

于 2016-03-02T02:10:08.580 回答
0

我认为你能做的最好的事情是,在你向服务器发送任何请求之前,你测试会话过期。

您可以使用currentSession(). 如果它返回“默认访客”,则表示会话已过期。然后将用户重定向到登录页面。

于 2016-02-25T15:17:16.413 回答
0

我记得在这些方面遇到了问题。检查以确保您的 4D 服务器具有 Wakanda 许可证。我发现服务器不喜欢没有许可证。确保您的服务器上有 4D 移动客户端许可证。默认情况下,您拥有 0 个许可证,除非您购买了一定数量的开发者许可证。

于 2016-03-03T15:30:33.283 回答
0

我看到您希望保持 Wakanda 会议的活力。

我相信解决方案是如何调用登录方法。

您是否loginByKey()在客户端调用,例如,对用户进行身份验证?loginByPassword()并且login()将是从客户端进行身份验证的其他方式。

我了解到您可以提供一个lifeTime参数,即 Wakanda 会话的持续时间。我不相信我已经成功地延长了这个时间,但我将它设置为一个非常大的值,并在客户端手动处理过期waf.directory.logout()的 Wakanda 会话。(您可以forceExpire()在服务器端使用,这可能是手动过期会话的更好方法)

以下是如何使用该lifeTime参数:

waf.directory.loginByKey(username, pass, 10800)

10800lifeTime参数,它是 Wakanda 会话的最大生命周期。如果您自己不指定一个,它默认为一个较低的数字。我不确定这个参数是什么时间单位。我相信它在几秒钟内---10800 / 60 would be 180 minutes, or 3 hours.如果您处理好会话管理,您可以将其设置为一个非常高的数字,然后手动注销人员。如果此信息有帮助,我也可以就此设置提供建议。

于 2016-03-23T17:06:25.583 回答
0

我会同意它是许可证问题。我将 mergeoutsidecatalog() 调用的超时设置为 5 分钟,Wakanda 会话超时默认为 60 分钟。因此,在会话超时之前,我与 4D 服务器的连接就超时了,并且在 Wakanda 下次调用 4D 方法时重新建立这些连接没有问题。我这样做是为了限制占用我的 4D 移动许可证之一超过必要的时间。在我的情况下,我的 4D 移动方法都没有维护选择,并且我没有访问任何 4D 表作为 Wakanda 中的数据源,我只调用 4D 移动方法,这些方法通过 4D 移动方法返回的对象从 4D 中的其他 4D 表返回数据. 4D 移动方法都属于同一个表,其中不包含实际记录。

于 2016-03-09T06:23:02.097 回答