2014-02-12 118 views
6

我正在使用PubNub進行與骨幹和javascript sdk的應用內聊天。如果我導航到另一個視圖並返回聊天窗口,那麼當我發佈消息時,我會重複收到它。如果我再次瀏覽我收到的消息一式三份,等等。Pubnub接收到重複消息

我想我每次都重複訂閱聊天頁面 - 但我無法取消訂閱工作,我可以'找到任何其他地方訂閱的文檔。

是否有我可以用來查看我是否已經訂閱的支票?

我的代碼是:

// 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 
}); 
+1

我應該添加消息正在發送一個,並接收多次 - 如果我重新加載應用程序的歷史不包含重複。 – Citylogic

+0

'pubnub.unsubscribe({channel:'my_channel'});'不起作用? – sb9

+1

我試着把它放在'close:function()'中,但視圖不關閉。我不確定我應該取消訂閱。 – Citylogic

回答

2

的pubnub變量是出餘地退訂。 開發人員不得不聲明函數之外的pubnub來取消訂閱。