Отправка XMLHTTPRequest при закрытии окна - PullRequest
0 голосов
/ 27 января 2011

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

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

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

1 Ответ

0 голосов
/ 27 января 2011

Это хак, который я использовал:

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.');
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...