如何有效地满足这个用例?

时间:2014-10-24 07:19:37

标签: javascript python node.js web-applications vpn

我有一个使用Python和Flask编写的Web应用程序。此Web应用程序仅在用户连接到内部VPN时运行。现在让我们假设用户已连接到互联网和VPN,并正在浏览网络应用程序,他的VPN将断开连接。在这种情况下,他将无法再访问网络应用程序。我想通过我的应用程序通知用户再次连接他的VPN。我写了一个Javascript,其中我正在对应用程序进行HEAD ajax调用,并根据响应状态判断他是否连接到VPN。以下是两个功能。

function isConnectedToVpn(){
    var xhr = new (window.ActiveXObject || XMLHttpRequest)("Microsoft.XMLHTTP");
    var status;
    xhr.open("HEAD", "//" + window.location.hostname , false);
    try{
        xhr.send();
        return (xhr.status >= 200 && (xhr.status < 300 || xhr.status === 304));
    }catch (error){
       return false;
    }
}

function isOnline()
{
    return navigator.onLine;
}

现在我怎样才能让最终用户下载这个JS,然后运行它直到整个会话,并在网站无法连接时提醒他。另外,如果他连接到VPN并且应用程序中存在真正的问题,我将如何能够减少误报。任何指针都会很有用。

1 个答案:

答案 0 :(得分:0)

将您的js代码放在静态文件夹中,然后更改isOnline

的js代码
document.onload = function isOnline()
{
    if !(isConnectedToVpn())
    {
        alert('Your not connected to the VPN');
    }
}

现在让所有模板继承自导入js的主(base.html)模板:

on base.html

`<script src="{{url_for('yourapp.static',filename='js/yourjsfile.js')}}"></script>`

放上你的所有模板:

{% extends "yourapp/base.html" %}
..
..
..