За последние 24 часа нас посетили 16656 программистов и 1594 робота. Сейчас ищут 1350 программистов ...

2 экземпляра объекта XMLHttpRequest

Тема в разделе "JavaScript и AJAX", создана пользователем hellhammer, 8 сен 2008.

  1. hellhammer

    hellhammer Активный пользователь

    С нами с:
    2 сен 2007
    Сообщения:
    42
    Симпатии:
    0
    Здравствуйте!
    Есть необходимость работать с двумя экземплярами объекта XMLHttpRequest: один производит рассылку смс по базе данных, другой каждые 2 секунды посылает запрос на количество отправленных на текущий момент сообщений (оно хранится и изменяется в переменной сессии по мере рассылки).
    Но проблема в том, что второй экземпляр объекта ждёт, пока первый (рассылка) получит данные и завершит работу. Следовательно, счётчик становится бесполезным, т.к. не выполняется параллельно с рассылкой, а только после неё.
    Вопрос: можно ли обойти это, и как?
     
  2. Dagdamor

    Dagdamor Активный пользователь

    С нами с:
    4 фев 2006
    Сообщения:
    2.095
    Симпатии:
    1
    Адрес:
    Барнаул
    hellhammer
    Почему у вас XMLHttpRequest занимаются рассылками СМС?
     
  3. hellhammer

    hellhammer Активный пользователь

    С нами с:
    2 сен 2007
    Сообщения:
    42
    Симпатии:
    0
    Ну не совсем так.
    xmlhttprequest посылает данные методу класса, который обращается к удалённому серверу, который уже и рассылает смс, возвращая xml-отчёт по каждому сообщению.
     
  4. Dagdamor

    Dagdamor Активный пользователь

    С нами с:
    4 фев 2006
    Сообщения:
    2.095
    Симпатии:
    1
    Адрес:
    Барнаул
    hellhammer
    Могу по вашей архитектуре сказать только одно: каждый инвок XMLHttpRequest - это запрос на сервер. Количество запросов надо по возможности уменьшать - в некоторых браузерах из соображений безопасности на количество AJAX-запросов вообще стоит ограничение. Почему бы не сделать, чтобы вызов запроса, рассылающего ваши письма, и не возвращал бы статистические данные?
     
  5. hellhammer

    hellhammer Активный пользователь

    С нами с:
    2 сен 2007
    Сообщения:
    42
    Симпатии:
    0
    Ну с этим тоже есть свои заморочки :))

    .......
    Узнал вот, что проблему можно решить, послав заголовок Connection: close.
    Посылаю: xmlHttp.setRequestHeader ("Connection", "close");
    Однако ничего не меняется. Отлавливаю в firefox'е заголовки и вижу, что этот заголовок оказался просто проигнорирован, там стоит Connection: keep-alive.

    Поэтому возник другой вопрос... Почему происходит так, что setRequestHeader игнорируется, и что с этим делать?..