如何检查某个特定用户是否有互联网连接?

时间:2017-01-18 17:35:25

标签: javascript ruby-on-rails ruby

我维护一个使用Ruby on Rails构建的系统。当特定用户没有互联网连接时,客户端要求我阻止系统工作。

你会怎么做?

我需要检查一台特定的电脑是否有互联网连接! 例如,如果我的电脑或您的电脑或我母亲的电脑没有网络连接!

3 个答案:

答案 0 :(得分:0)

这与Ruby on Rails无关。

此用户是否访问了本地网络上但没有外部互联网访问权限的网站?如果是这样,您可以在主页上使用before_filter或某种方法尝试ping google.com或局域网外的其他网站以检查互联网。

答案 1 :(得分:0)

使用Offline.js

  1. 在vendor / assets / javascripts
  2. 中添加offline.min.js文件
  3. 在app / assets / javascripts / application.js中要求//= require offline.min
  4. 在同一个application.js文件中添加以下代码

    $(document).ready(function() {
        Offline.check();
        Offline.on('up', function() {
            $('a.btn').removeClass('disabled');
        });
        Offline.on('down', function() {
            $('a.btn').addClass('disabled');
        });
    });
    
  5. 这与我的代码相关,我只是在连接关闭时禁用所有按钮。

    Offline.js的默认行为会添加一个带有请等待消息的叠加层,直到互联网连接重新开启。

    我更喜欢以这种方式处理它,因为它可以提供更好的用户体验。禁用按钮是阻止用户工作的一种微妙方式。

答案 2 :(得分:0)

所以只是为了澄清一下,您的Rails应用程序存在,用户可以将食品交付请求发送给一个特定的用户 - 商店准备并发送食物,大概是 - 并且您希望用户在以后无法创建新的递送请求商店/店主目前不在线上?

实现此目标的最简单方法是拥有一个管理员仪表板区域,所有者可以单击按钮“打开商店”并允许新订单。因此,担心的是商店的连接脱机,导致客户的订单从未收到过。为了解决这个问题,您可以让每个客户订单以“未确认”状态开始;当提交新订单时,会通知所有者,并且他可以单击按钮进行确认,让用户知道是,他们的订单已被看到并且正在进行(并且他们的信用卡可以被收取然后,如果您有在线支付)。这可能是最可靠的解决方案,因为您真正想要的是确认人类已经确认订单。

如果您 想要将其直接绑定到在线状态,那么您可以定期检查管理仪表板页面是否正在查看它。您可以使用websockets连接see Action Cable introduced in Rails 5来完成此操作。 Admin Dashboard页面在登录时打开websocket连接;新连接事件设置accepting_orders = true。 websocket disconnect事件设置accepting_orders = false,它将在连接断开后很快发生(确保检查超时设置)。如果没有websockets,您可能会在一个时间间隔内发生后台HTTP请求;没有收到该请求的 x 秒可能导致Rails停止接受新订单。