【问题标题】:How to get a Facebook like notification system in rails如何在 Rails 中获得类似 Facebook 的通知系统
【发布时间】:2015-08-09 20:38:20
【问题描述】:

嘿,如何在 Rails 中制作像 Facebook 或散居地这样的通知系统。

我曾尝试制作活动提要,但这不是我想要的,我想要一个与此网站完全相同的功能。

我有一个简单的应用,里面有买家和卖家两种类型的用户

我想在买家对其产品发表评论时通知卖家。

【问题讨论】:

    标签: ruby-on-rails facebook ruby-on-rails-4 notifications diaspora


    【解决方案1】:

    您在这里看到的是server push 实现。这意味着当服务器中发生某些通知/操作时,它应该将通知推送到您的 Rails 应用程序。 @manju 的答案的不同之处在于,它提出的基于您的客户端浏览器的解决方案将定期调用服务器以获取新通知。

    有两种主要方法可以做到这一点。

    1 - 使用一些第三方 SASS 解决方案。(简单的方法,但要花钱;))

    Fire base ,允许您向客户端发送推送通知。

    pusher 是另一个提供相同类型功能主义者的提供商。

    阅读他们的文档,通常他们每个人都有可以轻松集成到 Rails 应用程序的宝石。

    2 - 实现自己的推送服务器

    您可以使用 Rails 实现自己的推送服务器,并集成到您的应用中。

    Faye 是一个选项,

    但更令人兴奋的是 Rails5 将有 Action Cable 试图解决同样的问题。 action cable gem

    还有文章展示了带有rails4应用的action cable(你不必等到rails5出来),但我还没有亲自使用过。

    HTH

    【讨论】:

    • 感谢@sameera207。我不是在寻找实时通知。我知道这很愚蠢,但我希望用户刷新浏览器以查看新通知。
    • 我认为您想使用 SAAS(软件即服务)而不是 SASS(CSS 扩展语言)
    【解决方案2】:

    Facebook 使用 彗星技术。

    这里有一些有用的链接

    Link1

    Link2

    Link3

    这是 facebook 的原理

    • Facebook 的工作原理是轮询服务器以获取任何更改。

    • Facebook 页面将向服务器发出 ajax 请求,并且 ajax 请求将超时

    • 但是在服务器端的 API 中,它会通过不断检查数据库中的活动日志表来不断轮询数据库服务器是否有任何变化......如果发现变化,它将返回结果直到然后它将轮询数据库

    • 一旦 Ajax 请求完成,它将递归重试。

    这是一个代码 sn-p - 客户端

    function doPoll() {
       $.get("events.php", {}, function(result) {
          $.each(result.events, function(event) { //iterate over the events
              //do something with your event
          });
          doPoll(); 
          //this effectively causes the poll to run again as
          //soon as the response comes back
       }, 'json'); 
    }
    
    $(document).ready(function() {
        $.ajaxSetup({
           timeout: 1000*60//set a global AJAX timeout of a minute
        });
        doPoll(); // do the first poll
    });
    

    这是服务器端的code-sn-p:

    while(!has_event_happened()) {
       sleep(5);
    }
    
    echo json_encode(get_events());
    

    你可以找到它的详细信息here

    您实际上可以根据自己的需要采用这种方法

    【讨论】:

    • 谢谢@manju,但我想要一些简单的东西,只是下拉表单中的通知。我的需要是,当用户评论另一个用户的帖子时,他们需要在通知图标上用数字通知,用下拉列表中的通知...抱歉,实际上是新手,这就是为什么深入了解的原因
    • @Denialsmith - 您可以使用相同的逻辑...但让 API 返回 cmets 的数量并在图标中显示...就是这样...但逻辑是彗星
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-27
    • 1970-01-01
    • 2011-08-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多