какой код должен быть для кометного приложения на стороне сервера - PullRequest
0 голосов
/ 14 сентября 2009

Я работаю над приложением для чата и использую простой опрос ajax для получения нового чата, но он работает хорошо, потому что есть еще несколько запросов xmlHttp для проверки статуса в сети и отправки чата другим, а некоторые - по другой причине, поэтому я думаю, что есть много запросов в моей форме, поэтому он не работает, так что теперь я хочу сделать все это в стиле кометы. поэтому, пожалуйста, расскажите мне об этом, как это сделать.

это код боковой стороны

Dim output As String = JavaScriptConvert.SerializeObject(newChat)               
                    Response.Flush()
                    Response.Clear()
                    Response.Write(output)
                    Response.End()

и на стороне клиента у меня был установлен тайм-аут для непрерывной проверки.

Ответы [ 2 ]

0 голосов
/ 17 сентября 2009

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

Я рекомендую вам хорошо ознакомиться с жизненным циклом страницы asp.net, с тем, как этот жизненный цикл представлен в объекте запроса вашего клиента (прочитайте xmlhttprequest.readystate,) и как работает ваш сервер.

Что касается того, какой код вы включили, по моему опыту, вызов Response.End () или наличие конца функции закрывает ответ, который не обязательно является тем, что вы хотите получить.

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

Я считаю, что наименьшая сложность достигается, когда вы используете только два запроса. (Я полагаю, что это также в соответствии со спецификацией, но я не могу найти это atm.)

Для хорошего чтения, проверьте Comet и Reverse Ajax (доступно через адрес)

0 голосов
/ 14 сентября 2009

Вы понимаете, что такое комета, верно? Это означает, что соединение http должно оставаться в состоянии ожидания (как будто загрузка остановлена) до тех пор, пока на сервере не появится что-то интересное для клиента.

У клиента не будет тайм-аута. Он просто запросит снова, если текущая загрузка заканчивается.

Тайм-ауты могут возникать на сервере, чтобы попытаться опередить сетевые тайм-ауты, которые могут возникнуть на оборудовании на маршруте от сервера к клиенту (прокси и т. Д.).

Написание сервера Comet не является тривиальным делом. Похоже, вам нужно лучше понять концепции, прежде чем начинать такое опасное приключение.

...