流星:检查是否存在互联网连接

时间:2015-12-23 18:50:06

标签: meteor

我尝试过使用Meteor.status()并且它不可靠。我正在使用标准流星。有没有办法使用jQuery或JS来检查用户是否有连接到互联网(就在我运行一个函数时)

2 个答案:

答案 0 :(得分:2)

由于您提到您正在使用meteor,因此可以安全地假设您甚至不考虑IE 8等旧版浏览器。以下将检查用户是否有活动连接或说是连接到Internet。

var online = navigator.onLine;

来自W3C offline web applications规格

答案 1 :(得分:0)

这个问题的视角非常广泛,因为它实际上取决于你实际上所指的互联网。它可以是connecting to serverconnecting to just LAN or Router

在你的问题中我可以看到你的意思是“在Meteor中,如何检查客户端和服务器之间的连接。”

您可以简单地使用被动Meteor.status().status来跟踪Meteor客户端和服务器之间的连接状态。

根据Documentation for Server Connections status可以

  1. connected
  2. connecting
  3. failed
  4. waiting
  5. offline
  6. 我将演示一个代码,向您展示如何检查服务器 - 客户端连接状态。

    第1步

    在项目中安装包smowden:offline-js

    这将为您提供专业处理用户界面断开情况的视图,让您的客户不要惊慌。

    第2步

    YOUR_PAGE.js

    import './YOUR_PAGE.html';
    
    var run = () => {
       // this is supported by smowden:offline-js
       if (Offline.state === 'up'){
          Offline.check();
       }
     }
    
    Template.YOUR_PAGE.onCreated(function(){
      this.isOnline = new ReactiveVar(0);
      this.autorun(() => { 
        // to track status reactively
        if (Meteor.status().status === "connected") {
          console.log('connected.');
           this.isOnline.set(2);
        }
        else if (Meteor.status().status === "connecting") {
          console.log('connecting.');
           this.isOnline.set(1);
        }
        else {
            console.log('not connected.');
            this.isOnline.set(0);
        }
      });
    });
    
    Template.YOUR_PAGE.onRendered(function(){
      // run method 'run' at an interval of 5 seconds
      setInterval(run, 5000);
    });
    
    Template.YOUR_PAGE.helpers({
      connectivityStatus(statusId){
        // Simple check for equality
        return Template.instance().isOnline.get() == statusId;
      }
    });
    

    YOUR_PAGE.html

    <template name="YOUR_PAGE">
        <body>
            {{#if connectivityStatus 2}}
                <span class="label label-success">Connected</span>
            {{else}}
              {{#if connectivityStatus 1}}
                <span class="label label-success">Reconnecting</span>
              {{else}}
                <span class="label label-success">Disconnected</span>
              {{/if}}
            {{/if}}
        </body> 
    </template> 
    

    第3步

    1. 如何检查开发模式?如果服务器已启动,只需更改一些代码并save,您的用户界面将反映所遇到的各种状态的变化。
    2. 如何检查生产模式?如果服务器已启动,只需拔出LAN wire,您的UI就会反映遇到的各种状态的变化。