UPDATE
試圖弄清楚這個擺脫加+ 1等我注意到,擺脫正在改變的存在,對消息的消息在名冊變化對名冊發送所以我做的每一個XMLHttpRequest記住後在會議中新的擺脫。由於某些原因,本地存儲有時候有時候不工作。
現在我已經擺脫了所有的時間。
我想我得到了這個。問題擺脫和存在。
1)首先你必須從你的日誌中弄清楚如果你的日誌正在增加或減少。
我正在減少一個。所以我-1。減去從我Chat.connection.rid
2)在我的Openfire日誌我想通了,我是在頁面刷新 不能發送的狀態,所以我改變了我的window.unload函數發送存在網上。 N
現在我刷新頁面萬次,我從來沒有斷開連接。
現在我只需要弄清楚如何記住connection.rid到非HTML瀏覽器的localStorage。
要在調試模式下啓動openfire,只需添加./openfire.sh -debug。那麼你將能夠在debug.log中查看所有內容
這對我來說確實有竅門。如果這是對你的詭計,請+1並接受答案。
不要忘記在註銷:)
UPDATE終止會話
這是我在window.onunload功能
window.onunload = function(ev){
var initialPresence = $pres().c('show').t("cao").up().c('status').t("sad");
Chat.connection.send(initialPresence);
store.set('session_rid', parseInt(Chat.connection.rid)-1);
//save rooster contacts state
var contacts = document.getElementById('records').getElementsByTagName('li');
var id_value;
var class_value;
var status;
var el;
for(i= 0; i < contacts.length; i++){
el = contacts[i].getElementsByClassName("mood")[0];
status = el.textContent || el.innerText;
Array.prototype.slice.call(contacts[i].attributes).forEach(function(item) {
if(item.name == "id"){
id_value = item.value;
}
if(item.name == "class"){
class_value = item.value;
}
store.set('user'+i, { id: id_value, class_name: class_value, status : status });
});
}
Chat.disconnect();
}
這是我上的window.onload功能
window.onload = function(){
if(store.get("session_rid")){
var obj;
var id;
var class_name;
var status;
store.forEach(function(val, key) {
if(val !== "session_rid"){
setTimeout(function(){
obj = eval(key);
id = obj.id;
class_name = obj.class_name;
status = obj.status;
if(document.getElementById(id)){
document.getElementById(id).className = class_name;
document.getElementById(id).getElementsByClassName("mood")[0].innerHTML = "<span>"+status+"</span>";
}
}, 1000);
}
})
}
}
這是工作g對我來說。我使用store.js來存儲數據,因此它可以在IE上工作。
我使用了附加的會話。
//json is from ajax call on some php script that has started attached session on user login
var obj = JSON.parse(json);
connection = new Strophe.Connection(BOSH_SERVICE);
connection.attach(obj.fulljid,
obj.sid,
(store.get("session_rid") ? store.get("session_rid"):obj.rid),
justDoIt);
full_jid = obj.fulljid;
嗨@pregmatch,我自己有這個問題,我找不到任何解決方案。我的RID正在增加1,您是如何將您的RID附加到現有連接上的?如何在頁面卸載時發送在線狀態?我將我的RID,SID存儲到cookie中。請幫忙。 – leeshin
嗨@nino,答案更新代碼示例。 – pregmatch
@nino,告訴我你是否需要進一步的幫助,並接受或+1的答案,如果這是爲你工作。 – pregmatch