Javascript Pubnub接收重复消息

Javascript Pubnub接收重复消息,javascript,pubnub,Javascript,Pubnub,我正在使用PubNub与主干网和javascript sdk进行应用程序内聊天。如果我导航到另一个视图并返回聊天窗口,当我发布一条消息时,我会收到一式两份的消息。如果我再次浏览,我会收到一式三份的邮件,以此类推 我想每次我回到聊天页面时都会一次又一次地订阅,但是我无法让取消订阅生效,也找不到任何其他地方订阅的文档 是否有一张支票可以用来检查我是否已经订阅了 我的代码是: // INIT var channel = 'my_channel'; var pubnub = PUBNUB.init({

我正在使用PubNub与主干网和javascript sdk进行应用程序内聊天。如果我导航到另一个视图并返回聊天窗口,当我发布一条消息时,我会收到一式两份的消息。如果我再次浏览,我会收到一式三份的邮件,以此类推

我想每次我回到聊天页面时都会一次又一次地订阅,但是我无法让取消订阅生效,也找不到任何其他地方订阅的文档

是否有一张支票可以用来检查我是否已经订阅了

我的代码是:

// INIT
var channel = 'my_channel';
var pubnub  = PUBNUB.init({
subscribe_key : 'demo',
publish_key   : 'demo'
});

function chat(message) {
if (message.uid == "xxx") {
    $("#convo").append('<div class="isaid">' + message.message + '</div><div class="clear clearfix"></div>');
} else {
    $("#convo").append('<div class="hesaid">' + message.message + '</div><div class="clear clearfix"></div>');
}
}

pubnub.history({
channel  : channel, // USER_ID Channel
limit    : 30,      // Load Last 50 Messages
callback : function(msgs) { 
    pubnub.each( msgs[0], chat );
}
});

pubnub.subscribe({
channel: 'my_channel',
callback: function(data) {
    chat(data);
}
});

pubnub.publish({
     channel: 'my_channel',        
     message: data
 });
//初始化
变量通道=‘我的_通道’;
var pubnub=pubnub.init({
订阅密钥:“演示”,
发布密钥:“演示”
});
功能聊天(信息){
如果(message.uid==“xxx”){
$(“#conva”).append(“”+message.message+“”);
}否则{
$(“#conva”).append(“”+message.message+“”);
}
}
公共历史({
通道:通道,//用户ID通道
限制:30,//加载最后50条消息
回调:函数(msgs){
pubnub.each(msgs[0],聊天);
}
});
订阅({
频道:“我的频道”,
回调:函数(数据){
聊天(数据);
}
});
发布({
频道:“我的频道”,
信息:数据
});

pubnub变量超出了取消订阅的范围。
开发者必须在函数外声明pubnub以取消订阅。

我应该添加消息正在发送一次,并收到多次-如果我重新加载应用程序,历史记录不包含重复项。
pubnub.unsubscribe({channel:'my_channel'})不起作用?我尝试将其放入
close:function()
中,但视图没有关闭。我不确定我还应该在哪里退订。谢谢!我让它工作了-我必须在函数外声明pubnub才能取消订阅。边学边用。在订阅之前它不起作用,但我让它在视图关闭功能中起作用。谢谢你的帮助!