Ruby on rails 如何在rails中获得类似Facebook的通知系统

Ruby on rails 如何在rails中获得类似Facebook的通知系统,ruby-on-rails,facebook,ruby-on-rails-4,notifications,diaspora,Ruby On Rails,Facebook,Ruby On Rails 4,Notifications,Diaspora,嘿,如何在rails中创建像Facebook或diaspora这样的通知系统 我曾尝试制作活动提要,但那不是我想要的,我想要一个与此网站完全相同的功能 我有一个简单的应用程序,其中有两种类型的用户买家和卖家 每当买家对他们的产品发表评论时,我都想通知卖家。Facebook使用comet技术来做这件事 以下是一些有用的链接 下面是facebook的理论 Facebook的工作原理是对服务器进行任何更改的轮询 Facebook页面将向服务器发出ajax请求,ajax请求将有很多超时 但在服务

嘿,如何在rails中创建像Facebook或diaspora这样的通知系统

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

我有一个简单的应用程序,其中有两种类型的用户买家和卖家

每当买家对他们的产品发表评论时,我都想通知卖家。

Facebook使用comet技术来做这件事

以下是一些有用的链接

下面是facebook的理论

  • Facebook的工作原理是对服务器进行任何更改的轮询

  • Facebook页面将向服务器发出ajax请求,ajax请求将有很多超时

  • 但在服务器端的API中,它将通过不断检查数据库中的活动日志表,不断轮询DB server是否有任何更改。如果发现更改,它将返回结果,直到它轮询DB

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

下面是一个代码片段-客户端

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
});
以下是服务器端的代码片段:

while(!has_event_happened()) {
   sleep(5);
}

echo json_encode(get_events());
你可以找到很多细节

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

Facebook使用comet技术来实现这一点

以下是一些有用的链接

下面是facebook的理论

  • Facebook的工作原理是对服务器进行任何更改的轮询

  • Facebook页面将向服务器发出ajax请求,ajax请求将有很多超时

  • 但在服务器端的API中,它将通过不断检查数据库中的活动日志表,不断轮询DB server是否有任何更改。如果发现更改,它将返回结果,直到它轮询DB

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

下面是一个代码片段-客户端

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
});
以下是服务器端的代码片段:

while(!has_event_happened()) {
   sleep(5);
}

echo json_encode(get_events());
你可以找到很多细节

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

Facebook使用comet技术来实现这一点

以下是一些有用的链接

下面是facebook的理论

  • Facebook的工作原理是对服务器进行任何更改的轮询

  • Facebook页面将向服务器发出ajax请求,ajax请求将有很多超时

  • 但在服务器端的API中,它将通过不断检查数据库中的活动日志表,不断轮询DB server是否有任何更改。如果发现更改,它将返回结果,直到它轮询DB

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

下面是一个代码片段-客户端

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
});
以下是服务器端的代码片段:

while(!has_event_happened()) {
   sleep(5);
}

echo json_encode(get_events());
你可以找到很多细节

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

Facebook使用comet技术来实现这一点

以下是一些有用的链接

下面是facebook的理论

  • Facebook的工作原理是对服务器进行任何更改的轮询

  • Facebook页面将向服务器发出ajax请求,ajax请求将有很多超时

  • 但在服务器端的API中,它将通过不断检查数据库中的活动日志表,不断轮询DB server是否有任何更改。如果发现更改,它将返回结果,直到它轮询DB

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

下面是一个代码片段-客户端

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
});
以下是服务器端的代码片段:

while(!has_event_happened()) {
   sleep(5);
}

echo json_encode(get_events());
你可以找到很多细节


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

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

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

1-使用一些第三方SASS解决方案。(方法简单,但成本高;)

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

是另一个提供相同功能的提供商

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

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

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

这是一个选择

但更令人兴奋的是,Rails5将配备行动电缆,试图解决同样的问题

还有一些文章展示了rails4应用程序的action cable(你不必等到rails5发布),但我还没有亲自使用过


HTH

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

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

1-使用一些第三方SASS解决方案。(方法简单,但成本高;)

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

是另一个提供相同功能的提供商

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

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

您可以实现自己的推送服务器w