- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 symfony2 构建一些应用程序。在那个应用程序中我有聊天应用程序。我在聊天中使用附加 session 。
1)登录时,我启动事件监听器以捕获登录中的用户/密码,连接到 openfire 服务器并获取 sid 和 rod。
2)之后,我将这些数据存储在 session 中,以便稍后我可以在聊天的每个页面上使用它们。
重新加载/刷新页面时出现问题。
我猜测这是因为对 url:7070/httpd-bind 的 ajax 请求被取消,strope 发送终止到 openfire 服务器。但是我找不到任何终止节的地方。
我已经修补了 strope.js 以在页面卸载时使用同步,但同样不起作用。
Chat.connection.flush();
Chat.connection.sync = true; // Switch to using synchronous requests since this is typically called onUnload.
Chat.connection.disconnect();
请为此提出解决方案,我正在编码 10 小时,但我不知道如何解决这个问题。
我可以在 session 中存储用户/密码,但这太愚蠢了。如果我必须这样做,为什么还要存在附加 session 。
最佳答案
更新
在尝试计算这个rid plus+1等之后,我注意到rid在存在时发生变化,在名册上发送的消息上的消息在名册上发生变化,所以我在每个上创建了一个XMLHttpRequest来记住 session 中的新rid。由于某种原因,本地存储有时工作有时不工作。
现在我已经摆脱了所有的时间。
<小时/>我想我明白了。问题在于摆脱和存在。
1)首先,您必须从日志中找出您的 Rid 是增加还是减少。
我的减少了 1。所以我从 Chat.connection.rid 中减去 -1
2)在我的 openfire 日志中,我发现我在页面刷新时发送了不可用状态所以我更改了 window.unload 函数以将状态发送到在线。 N
现在我刷新页面一百万次并且从未断开连接。
现在我只需要弄清楚如何将connection.rid 记住到非HTML 浏览器的localStorage 中。
要在 Debug模式下启动 openfire,只需添加 ./openfire.sh -debug。然后你就可以看到 debug.log 中的所有内容
这对我来说确实是个骗局。如果这对您有用,请+1 并接受答案。
不要忘记在注销时终止 session :)
更新
这是我的 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);
}
})
}
}
这对我有用。我用过store.js存储数据,以便它可以在 IE 上运行。
我使用了附加 session 。
//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;
关于javascript - strope.js 和 openfire 谁在页面重新加载时终止连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19611465/
我已经在基于 Web 的客户端界面上使用 XMPP + BOSH 实现了 OPENFIRE。当我发送消息时,我检查连接是否处于事件状态。如果不是事件状态,我会创建新连接,然后发送。 有时会发生客户端发
我已经使用 strope.js 和 jQuery 编写了一个基于 Web 的 MUC 客户端,并且我正在尝试发送一个无法进入房间并在 jquery 中断开用户连接窗口的卸载事件。如果用户离开或关闭浏览
带有 strope 和 javascript 的基本 XMPP 想要转换为 AngularJS。 .controller('loginCtrl', function(xmppAuth) { x
我正在使用 strope 和 jquery 构建一个基于 Web 的客户端,并使用 openfire 作为服务器。几乎一切都正常,我可以获取花名册列表,发送和接收消息,但是当我尝试将我的状态从可用更改
使用此 Strope 命令时: var iq = $iq({type: 'get'}).c('query', {xmlns: 'jabber:iq:roster'}); connection.send
我在远程位置托管了 Ejabberd 服务器。我正在尝试使用 Strope.js 注册插件注册新帐户,但我找不到为什么这不起作用。下面是我写的代码 var connection = new S
我最近遇到了 Strope.js 应用程序的另一个问题:尽管我正在积极与用户 B 聊天(根据规范发送正确的 xml,包括 和其他内容)服务器会通知用户 B我变得无法联系。 目前逻辑如下: 连接 发送初
我知道还有许多其他与 strope 带内注册和 XEP 0077 相关的问题,但我的问题如下: 我正在尝试以正确的形式编写以下节: juliet R0m30 JJ
我将 strope js 与 xmpp 服务器一起使用。我从 strope 客户端发送一条消息到另一个客户端。客户端接收该消息。FromCLient 我只能向 strope 客户端发送一条消
我正在使用 Strope js 开发一个基于网络的聊天应用程序。我正在使用 Ejabberd XMPP 服务器。我浏览了 strope js 提供的插件,但没有找到任何用于发送/接收图像的插件。我搜索
我在html表单上输入jid和pwd,并使用Strope连接到openfire,但是当我按下登录按钮时,xmpp服务器响应是错误302。我在 openfire 上启用了该选项,然后重新启动它。 var
我正在开发一个通用库,用于通过 BOSH 服务与 xmpp 用户进行通信。我使用 Strope.js 我无法理解为什么在类 BoshCommunicator 方法 onConnect 中我有一个 St
我有基于 AngularJS 的基本 XMPP 客户端 this link 。 user@user.local发送消息成功,但user@user.local仍然无法接收消息console.log("m
我目前正在考虑向我的网站添加实时通知系统,到目前为止我的选择是使用 node.js 或带有 js XMPP 库(例如 strope.js)的 XMPP 服务器。现在我只需要它作为我网站上的实时通知系统
我有一个用 Strope 编写的小型 JavaScript XMPP 客户端,它连接到 Hosted.im 上托管的服务器。我认为 Hosted.im 在其后端使用 ejabberd。 我使用建立连接
我想使用 Strope.js 库在 Titanium appcelerator 中创建一个聊天应用程序。我也浏览了 strophe js 库及其文档。我相信我们可以使用 strope.js 在网络中构
谁能告诉我XMPP中使用strope进行文件传输的实现吗 图书馆 最佳答案 我建议使用XEP-0065: SOCKS5 Bytestreams恐怕你需要自己编写代码...... 关于jquery -
我正在使用 symfony2 构建一些应用程序。在那个应用程序中我有聊天应用程序。我在聊天中使用附加 session 。 1)登录时,我启动事件监听器以捕获登录中的用户/密码,连接到 openfire
我是 Xmpp 服务器和 strope.js 的新手,我将其实现到我的网站中以进行消息传递。当我发送消息时出现问题,它工作正常,但是发送消息后,如果我立即重新加载页面,那么我会看到该消息,我在重新加载
我试图在打字时收到通知。 connection.addHandler(onNotificationReceived, null, "message", "chat", null, null);
我是一名优秀的程序员,十分优秀!