Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何从按钮按下调用faye disconnect事件_Ruby On Rails_Ruby On Rails 3_Sockets_Faye_Private Pub - Fatal编程技术网

Ruby on rails 如何从按钮按下调用faye disconnect事件

Ruby on rails 如何从按钮按下调用faye disconnect事件,ruby-on-rails,ruby-on-rails-3,sockets,faye,private-pub,Ruby On Rails,Ruby On Rails 3,Sockets,Faye,Private Pub,我的问题与费伊的断线事件有关。我可以轻松地从java脚本订阅频道,还可以处理/meta/subscribe和/meta/connect。但是我想在我的html.erb文件中有一个按钮,并使用它来断开或取消订阅频道。我想知道如何启动java脚本以断开与频道的连接,就像订阅频道时一样,如下所示: $(function() { var faye = new Faye.Client('http://localhost:9292/faye'); faye.subscribe("/message

我的问题与费伊的断线事件有关。我可以轻松地从java脚本订阅频道,还可以处理
/meta/subscribe
/meta/connect
。但是我想在我的html.erb文件中有一个按钮,并使用它来断开或取消订阅频道。我想知道如何启动java脚本以断开与频道的连接,就像订阅频道时一样,如下所示:

$(function() {
  var faye = new Faye.Client('http://localhost:9292/faye');
    faye.subscribe("/messages/new", function(data) {
     eval(data);
    });
});
请提供控制器代码或java脚本代码。谢谢

subscribe()方法返回一个Subscription对象,如果要从频道中删除该侦听器,可以取消该对象

因此,您可以将对象存储在另一个名为
subscription
的变量中,然后将subscripte方法返回的subscription对象存储在其中

var subscription;
$(function() {
  var faye = new Faye.Client('http://localhost:9292/faye');
  subscription = faye.subscribe("/messages/new", function(data) {
    eval(data);
  });
});

$('#button').click(function() {
  subscription.cancel();
});
因此,在这种情况下,当您单击id为
按钮的按钮时,它将取消订阅。
我建议在取消之前检查您是否已经订阅

订阅/取消的来源: