Возникли проблемы с подключением к сеансу BOSH с использованием Strophe - PullRequest
1 голос
/ 10 августа 2011

Я внедряю систему уведомлений в реальном времени, используя XMPP поверх BOSH и Strophe на стороне клиента, но у меня есть некоторые проблемы. Когда я захожу на свой сайт, я устанавливаю BOSH-соединение в бэк-энде и сохраняю JID, SID и RID в виде куки. Когда страница перезагружается, я получаю данные из файлов cookie и присоединяюсь к этому сеансу, используя функцию прикрепления Strophe. Я получаю статус обратного вызова, который говорит, что я был прикреплен.

Первая проблема, с которой я сталкиваюсь, заключается в том, что запросы отправляются каждую секунду или около того. Это заголовки запроса:

URL запроса: http://localhost:7070/http-bind/
Способ запроса: POST
Код состояния: 200 ОК

Заголовки запроса
Принимаем: * / *
Accept-Charset: UTF-8, *; д = 0,5
Accept-Encoding: GZIP, выкачать, SDCH
Accept-Language: SV-SE, св; д = 0,8, EN-US; д = 0,6, ан; д = 0,4
Cache-Control: макс возраста = 0
Подключение: держать-жив
Content-Length: 77
Печенье: JSESSIONID = ibxwvm3ophp8; jiveforums.admin.logviewer = "debug.size = 0 & info.size = 0 & warn.size = 0 & error.size = 0"
Ведущий: локальный: 7070
Происхождение: http://***
Referer: http://***/flXHR/flXHR.swf
Пользователь-агент: Mozilla / 5.0 (Macintosh; Intel Mac OS X 10_6_7) AppleWebKit / 535.1 (KHTML, как Gecko) Chrome / 13.0.782.107 Safari / 535.1 тип контента: application / x-www-form-urlencoded

Данные формы

Заголовки ответа
Content-Length: 57
Content-Type: текст / XML, кодировка = UTF-8
Сервер: Jetty (7.0.2-SNAPSHOT)

Я не вижу никакого ответа, поэтому не уверен, что его вызывает. Отправляемые данные формы выглядят как недопустимый и неполный XML, это их вызывает или именно так Chrome будет форматировать их в отладчике?

Другая проблема, с которой я сталкиваюсь, - это перезагрузка страницы. Я связал событие unload с объектом окна, в котором я увеличил RID на единицу и сохранил его в cookie. Однако, когда страница перезагружается, она говорит, что я подключился к сеансу BOSH, но затем я получаю следующее сообщение об ошибке:

POST <a href="http://localhost:7070/http-bind/" rel="nofollow">http://localhost:7070/http-bind/</a> 404 (Not Found) (localhost)

Uncaught Error: 16, ioError, An error occured preventing completion of the request. (flensed.js)

Следующий запрос выдаст 404 (неверный SID.) Вместо 404 (не найден) и повторяется каждые 70+ секунд или около того.

Кто-нибудь еще сталкивался с этой проблемой и знает, как ее решить? Я разочарован!

Заранее спасибо,
Pierre

1 Ответ

1 голос
/ 16 ноября 2014

Несмотря на то, что вы отказались от реализации, первая проблема, о которой вы упомянули, это просто непрерывный пинг, который клиентский сервер выполняет в соединениях Openfire, чтобы сервер знал, что клиент запущен и работает.Вторая ошибка, не совсем точно, но, вероятно, возникает, когда вы прерываете связь между ними и не завершаете ее изящно.Это может привести к тому, что клиент strophe столкнется с некоторыми проблемами при повторной привязке к порту.Также вы сталкиваетесь с проблемой неоднократно из-за механизма пинга, упомянутого выше.Вы могли попытаться вызвать метод connection.disconnect после того, как было запущено событие window.onbeforeunload.Это обеспечило бы постепенное прекращение и, следовательно, правильное переподключение.

...