在我们的项目中,我们试图弄清楚连接到服务器的最佳过程是什么-特别是在处理脱机/联机情况等时。
现在,对于我们来说,似乎连接到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/