2010-04-11 6 views
3

У меня возникли трудности с работой функции 'attach()' строфы.Сессия о возобновлении работы с приложением Strophe и Ejabberd

Я работаю в социальной сети, где пользователи будут просматривать страницы и в то же время поддерживать связь в чате. Я не хочу повторно подключаться/повторно авторизоваться на каждой странице, так как по этой ссылке, http://groups.google.com/group/strophe/browse_thread/thread/430da5e788278f3a/93c48c88164f382f?show_docid=93c48c88164f382f&fwc=1, я храню SID и RID в файл cookie onunload.

На следующей странице, когда я пытаюсь использовать новый SID и RID (после увеличения на 1) моя сессия уже уничтожена. Ejabberd сообщает: «Ошибка при посылке HTTP. Причина: bad_key»

WTF происходит?

ответ

1

Мне удалось решить проблему.

Устранение удваивалось между страницами. Увеличивая его только после того, как приложение session начнет работать.

Я не знаю, почему сеанс был отменен, но вот что случилось:

  1. Поскольку RID более +2, чем предыдущие, ejabberd сохраняет запрос в буфере и не направляет его клиенты
  2. следующие 2 запросов также откладываются
  3. одной после этого вызывает ejabberd отменить сессию

Любые подсказки?

5

Без дополнительной информации о регистрации от ejabberd или Firebug это будет трудно диагностировать. Правильный ли RID хранится в файле cookie? Что думает ejabberd - последняя строфа, которую вы отправили, и какое значение имеет RID? Какова первая строфа и первое значение RID на новой странице? Как долго между этими двумя строфами?

Обновлено: Причина, по которой сессия отменяется, связана с моделью безопасности BOSH. Эффективно пара SID и RID является секретной. Если вы знаете пару, вы можете присоединить ее к сеансу. Чтобы люди не могли угадать, RID выбирается случайным образом из очень большого пространства. Если вы отправляете RID за очень маленькое окно из текущего RID, он отключит сеанс. Обычно это окно (RID, RID + 5) или около того.

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