сбросьте соединение XMPP, если страница обновляется - PullRequest
2 голосов
/ 09 марта 2012

Я пытаюсь создать прямое соединение с XMPP, используя javascript с моим сервером ejabberd, я могу установить соединение при загрузке страницы и отключиться при нажатии кнопки разъединения.

теперьпроблема в том, что соединение живо, и если пользователь случайно обновляет страницу, то мой javascript пытается установить соединение снова, и в ответ на это я получаю.(это только потому, что предыдущее соединение может быть еще живым)

<body xmlns='http://jabber.org/protocol/httpbind'>
    <failure xmlns='urn:ietf:params:xml:ns:xmpp-sasl'>
            <not-authorized/>
    </failure>
</body>

и через некоторое время, если я обновлю страницу снова, тогда соединение будет установлено успешно, так как я могу сбросить соединение в случае, если страницаслучайно обновлен, так что пользователь получает бесшовное соединение.

Ответы [ 2 ]

3 голосов
/ 10 марта 2012

Если вы хотите, чтобы соединение сохранялось при обновлении страницы, сохраняйте переменные jid, sid и rid вместе с любым другим нужным вам состоянием во что-то вроде sessionStorage.Затем вы можете использовать attach() для возобновления сеанса XMPP.

0 голосов
/ 09 марта 2012

I догадываюсь вы входите в систему с тем же JID, что запрещено.Вам нужно установить случайный ресурс для вашего JID, чтобы избежать коллизий.Поэтому вместо того, чтобы регистрировать пользователя с помощью JID user@domain, вы должны использовать JID user@domain/some_random_resource.

. В принципе, вы также можете прослушать onbeforeunload и отключиться оттуда.Это не будет работать с браузерами на основе webkit, но будет работать с остальными.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...