我已经为网络写了an XMPP client,使用标准的BOSH方法连接到服务器。
当用户关闭窗口时,我遇到了用户连接保持打开的问题;由于协议的特殊性,我无法在检测到这种活动时采取行动。 BOSH设计的原因之一是处理易于连接丢失的网络。因此,如果在预先指定的时间范围内打开另一个连接,则可以容忍丢失与服务器的BOSH(Comet)连接。因此,要真正断开用户连接,我必须通过另一个XMLHTTPRequest向XMPP服务器发送断开连接消息。
由于XMLHTTPRequest的异步性质,据我所知,这是不可能的(如果可能的话,它可能会成为隐私问题)。还是我错了?有人可以了解如何在用户关闭窗口时向服务器发送一个最终请求吗?
答案 0 :(得分:0)
这是我用过的黑客:
window.onunload = function() {
// I use Prototype to make the Ajax request,
// but you can use any library you like.
new Ajax.Request('closeConnection.php');
alert('While they\'re reading this message, the Ajax should be complete.');
};