我的问题与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脚本代码。感谢
答案 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
的按钮时,它将取消订阅。
我建议在取消之前检查你是否已经订阅。