IBM Worklight - 连接/重新连接:WL.Client.connect与connectOnStartup对比WL.Client.invokeProcedure

时间:2013-07-23 23:52:21

标签: ibm-mobilefirst worklight-server worklight-runtime

在我们的项目中,我们试图确定连接到服务器的最佳流程是什么 - 特别是在处理离线/在线场景等时。

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

这三种连接WL服务器的方式之间是否存在重大差异,或者在所有三种情况下执行的连接程序基本相同?

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

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

修改

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

Cordova Event的使用是否会像:

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

提供接近该功能的功能吗?

1 个答案:

答案 0 :(得分:3)

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

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

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

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

一般情况下 - 即使您在未调用WL.Client.invokeProcedure()的情况下致电WL.Client.connect(),大多数功能(例如适配器,远程禁用)也会正常运行。但有几件事情无法发挥作用:

  1. 如果不致电WL.Client.connect()
  2. ,您将无法充分利用推送通知
  3. WL.Client.connect()
  4. 期间触发直接更新
  5. WL.Client.connect()将从服务器获取与安全相关的信息,例如领域的名称,无论用户是否在这些领域中进行了身份验证等。因此,WL.Client.getUserInfo.isAuthenticated().getUserName()等所有API都无法正常运行。
  6. 强烈建议您使用WL.Client.connect()(或initOptions.connectOnStartup=true)开始会话。