2011-01-27 3 views
0

Я написал an XMPP client для Интернета, используя стандартный метод BOSH для подключения к серверу.Публикация XMLHTTPRequest при закрытии окна

У меня возникла проблема, когда соединение пользователя остается открытым, когда пользователь закрывает окно; Я не могу действовать в отношении обнаружения такого вида деятельности из-за особенностей протокола. Одной из причин, по которой BOSH был разработан, было обращение к сетям, зависящим от потери связи. Таким образом, проигрывание соединения BOSH (Comet) с сервером допускается, если другое соединение открывается в течение заранее определенного таймфрейма. Таким образом, чтобы действительно отключить пользователя, мне пришлось бы отправить сообщение об отключении на сервер XMPP через другой XMLHTTPRequest.

Из-за асинхронного характера XMLHTTPRequest это, насколько мне известно, невозможно (и это могло бы стать проблемой конфиденциальности, если это было возможно). Или я ошибаюсь? Может кто-то пролить свет на то, как отправить один последний запрос на сервер при закрытии окна пользователем?

ответ

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.'); 
}; 
+0

Хотя хороший хак, это не решение, так как окно/вкладку близко должна быть не интерактивными. –

Смежные вопросы