Я не могу дать хороший ответ на ваш вопрос, потому что код, который вы включили до сих пор, не совсем понятен относительно того, что делает ваш сервер. Комета хороша, но это не панацея, и, как упоминалось ранее, есть некоторые концепции, которые вам необходимо понять, чтобы успешно реализовать.
Я рекомендую вам хорошо ознакомиться с жизненным циклом страницы asp.net, с тем, как этот жизненный цикл представлен в объекте запроса вашего клиента (прочитайте xmlhttprequest.readystate,) и как работает ваш сервер.
Что касается того, какой код вы включили, по моему опыту, вызов Response.End () или наличие конца функции закрывает ответ, который не обязательно является тем, что вы хотите получить.
На пользовательском сервере, который мы используем, я использую дескриптор ожидания события, чтобы сигнализировать и ждать ввода данных от клиента. Я также должен убедиться, что, если пользователь отправляет много запросов, данные либо упакованы и обрабатываются на сервере правильно, либо эти запросы не блокируют поток представления состояния (который обрабатывает этот вывод обратно клиенту). )
Я считаю, что наименьшая сложность достигается, когда вы используете только два запроса. (Я полагаю, что это также в соответствии со спецификацией, но я не могу найти это atm.)
Для хорошего чтения, проверьте Comet и Reverse Ajax (доступно через адрес)