如何通过按下按钮调用faye断开事件

时间:2013-03-08 10:42:15

标签: ruby-on-rails ruby-on-rails-3 sockets faye private-pub

我的问题与Faye的断开事件有关。我可以轻松地从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脚本代码。感谢

1 个答案:

答案 0 :(得分:2)

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

所以你可以做的是将对象存储在另一个名为subscription的变量中,然后将subscribe方法返回的订阅对象存储在其中。

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();
});

因此,在这种情况下,当您单击标识为button的按钮时,它将取消订阅。 我建议在取消之前检查你是否已经订阅。

订阅/取消来源:http://faye.jcoglan.com/browser/subscribing.html