监测网络状态,离线/在线应用程序的实现 您所在的位置:网站首页 在线监测网络 监测网络状态,离线/在线应用程序的实现

监测网络状态,离线/在线应用程序的实现

2023-03-19 05:25| 来源: 网络整理| 查看: 265

AIR与Flex web应用的另一区别在于可以动态监测网络状态,可以让开发者在网络连通或断线时用不同的方式处理程序,在Demo中我将用以下情况来表现AIR的离线与在线应用。

1. 用户在文本框中输入内容。文本框下方的保存按钮会动态显示当前网络状态: (在线)保存与(离线)保存.2. 在用户点击保存按钮时如果网络在线,将对话框内容保存在服务器。3. 如果保存时处于断线状态,将内容保存在本地文件中。4. 当网络恢复时检查本地文件,如果有已经保存的内容,将内容传入服务器。

源代码很简单,不到100行,大家可以在最下方下载。现在我开始讲解

Demo操作方法

1. 按装运行demo,如果网络连接正常,你会看到文本框下的按钮为 (在线) 保存。2. 输入任意信息,点击 (在线)保存 。你会看倒信息 “内容已上传服务器”。3. 切断网络。大概3-5秒后你会看到文本框下方按钮变为(离线)保存。4. 点击保存,你会看倒信息“内容已经在本地保存,会在下次连线时自动上传到服务器”。5. 接痛网络,大概3--5秒后你会看倒信息 “缓存内容已上传服务器”。6. Demo结束。

1. 启动应用程序后监控网络状态。

我们在 App的CreationComplete()中调用netWorkSyc来监控网络状态。

private function networkSyc():void{//创建一个联接,使用HEAD表示不需要加载玩全部的页面。var request:URLRequest = new URLRequest( “http://www.google.com”);requesthod = “HEAD”;

//用url创建监测对象,每3秒检查一次网络状态,如果网络状态发生变化,将结果返回到netWorkStatusHandle()urlMonitor = new URLMonitor(request);urlMonitor.pollInterval = 3000;urlMonitor.addEventListener(StatusEvent.STATUS,netWorkStatusHandle);urlMonitor.start();}

//网络状态改变时响应该事件private function netWorkStatusHandle(e:StatusEvent):void{if(urlMonitor.available){//如果有本地文件,假装上传服务器if(this.checkLoaclFile()){//Kevin TODO 上传服务骑this.showAlert(”缓存内容已上传服务器”);}saveBtn.label = “(在线)保存”}else{saveBtn.label = “(离线)保存”}}

上面的networkSyc()方法中我使用了两个类的对象来实现网络监控,URLRequest 和 URLMonitor。我用URLRequest来建立一个连接对象request,连接的地址是www.google.com。然后已request作为构造参数创建URLMonitor对象。我就是靠它来完成对网络状态的监控。

监控原理很简单,当第一次执行networkSyc()时,urlMonitor会尝试连接www.google.com,然后将连接的结果发回到 netWorkStatusHandle(), 如果连接成功,urlMonitor.available会为true,反之为false。接下来每3秒检查一次网络状态,如果发生改变(连接成功变为连接失败或者连接失败变为连接成功),那么将再度触发StatusEvent.STATUS事件,调用netWorkStatusHandle()返回网络状态。

以上就是AIR监控网络的方式,大家如果感兴趣想知道更多URLMonitor的内容,可以在Help中搜索ServiceMonitor,它的sub class就是URLMonitor和SockterMonitor。

Demo中并没有真正在本地保存文件,保存与读取文件的方法我会在下一篇教程–“AIR的文件操作”中教给大家。

webstate

源文件下载Demo



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有