3

在我们的项目中,我们试图弄清楚连接到服务器的最佳过程是什么——尤其是在处理离线/在线场景等时。

现在,对我们来说,连接到 WL 服务器的所有三个选项似乎都是相似的。无论我们使用什么选项,我们都可以完美地调用我们的适配器过程,并且我们会收到在控制台中设置的通知消息。我们不确定直接更新 - 这还不能正常工作。

这三种连接到 WL 服务器的方式之间是否有任何重要区别,或者在所有三种情况下执行的连接过程基本相同?

WL.Client.init() 在连接之前怎么样 - 在我们手动使用 WL.Client.connect 连接之前,我们是否可以在我们的代码中再次调用它(除了标准窗口加载 EventListener) - 或者 init() 应该是只调用一次?

与之相关的也是离线并重新连接。据我在教程中阅读,WL 客户端框架正在管理连接状态。这是否意味着当 WL 客户端通过这三种方式中的任何一种连接到服务器并失去其 WLAN/3G/4G 连接(或者由于 Internet 连接阻止程序等原因而无法访问 WL 服务器)时,它会自动重新连接(定期尝试重新连接直到成功)当与 WL 服务器的连接再次可用时?

编辑

我在考虑提供更多低级信息(不是 WORKLIGHT_IS_CONNECTED)的事件或线程 - 基本上是在设备丢失/获取 WIFI/3G/4G 连接和/或互联网连接时触发的事件。还是只有使用 WL.Device.getNetworkInfo() 的轮询可用?

Cordova Event 的使用会像:

document.addEventListener("offline", yourCallbackFunction, false);

提供接近的功能?

4

1 回答 1

3

尽管这三种方式确实有一些相似之处,但它们之间的差异非常重要。

WL.Client.init()初始化客户端 WL 框架。

WL.Client.connect()触发到 WL 服务器的连接请求。

initOptions.connectOnStartup定义是否WL.Client.connect()将在 WL.Client.init() 期间自动调用。

通常 - 即使您在WL.Client.invokeProcedure()没有调用WL.Client.connect(). 但是有几件事不起作用:

  1. 如果不打电话,您将无法充分利用推送通知WL.Client.connect()
  2. 期间触发直接更新WL.Client.connect()
  3. WL.Client.connect()将从服务器获取与安全相关的信息,例如领域的名称、用户是否在这些领域中进行了身份验证等。因此,所有 API,如、WL.Client.getUserInfo等都将不起作用。.isAuthenticated().getUserName()

WL.Client.connect()强烈建议使用(或)开始您的会话initOptions.connectOnStartup=true

于 2013-07-24T07:10:32.540 回答