在我们的项目中,我们试图确定连接到服务器的最佳流程是什么 - 特别是在处理离线/在线场景等时。
现在,对我们来说,似乎连接到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);
提供接近该功能的功能吗?
答案 0 :(得分:3)
虽然这三种方式确实有一些相似之处,但它们之间的差异非常重要。
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()
将从服务器获取与安全相关的信息,例如领域的名称,无论用户是否在这些领域中进行了身份验证等。因此,WL.Client.getUserInfo
,.isAuthenticated()
,.getUserName()
等所有API都无法正常运行。强烈建议您使用WL.Client.connect()
(或initOptions.connectOnStartup=true
)开始会话。