在我们的项目中,我们试图弄清楚连接到服务器的最佳过程是什么-特别是在处理脱机/联机情况等时。

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

这三种连接到WL服务器的方式之间有什么重要区别,还是在所有三种情况下都执行相同的连接过程?

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

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

编辑

我在考虑提供更多低层信息(不是WORKLIGHT_IS_CONNECTED)的事件或线程-基本上是当设备丢失/获得WIFI / 3G / 4G连接和/或Internet连接时将触发的事件。还是仅存在使用WL.Device.getNetworkInfo()的轮询?

使用Cordova Event像:

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

提供与之接近的功能?

最佳答案

尽管这三种方式确实有一些相似之处,但是它们之间的差异非常重要。
WL.Client.init()初始化客户端WL框架。
WL.Client.connect()触发与WL服务器的连接请求。
initOptions.connectOnStartup定义是否在WL.Client.init()期间自动调用WL.Client.connect()

一般而言-即使您在不调用WL.Client.invokeProcedure()的情况下调用WL.Client.connect(),大多数功能(例如适配器,远程禁用)也将起作用。但是,有些事情将不起作用:

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

  • 强烈建议使用WL.Client.connect()(或initOptions.connectOnStartup=true)开始 session 。

    关于ibm-mobilefirst - IBM Worklight-连接/重新连接:WL.Client.connect与connectOnStartup与WL.Client.invokeProcedure,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17822922/

    10-11 05:19