我尝试过使用Meteor.status()并且它不可靠。我正在使用标准流星。有没有办法使用jQuery或JS来检查用户是否有连接到互联网(就在我运行一个函数时)
答案 0 :(得分:2)
由于您提到您正在使用meteor,因此可以安全地假设您甚至不考虑IE 8等旧版浏览器。以下将检查用户是否有活动连接或说是连接到Internet。
var online = navigator.onLine;
答案 1 :(得分:0)
这个问题的视角非常广泛,因为它实际上取决于你实际上所指的互联网。它可以是connecting to server
,connecting to just LAN or Router
。
在你的问题中我可以看到你的意思是“在Meteor中,如何检查客户端和服务器之间的连接。”
您可以简单地使用被动Meteor.status().status
来跟踪Meteor客户端和服务器之间的连接状态。
根据Documentation for Server Connections status
可以
connected
connecting
failed
waiting
offline
我将演示一个代码,向您展示如何检查服务器 - 客户端连接状态。
第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步
save
,您的用户界面将反映所遇到的各种状态的变化。LAN wire
,您的UI就会反映遇到的各种状态的变化。