Приложение чата в ASP.NET

Мне нужно написать веб-приложение чата Ajax в ASP.NET для друга, и у меня есть вопрос: если клиент1 отправляет сообщение клиенту2, как приложение должно отправить сообщение клиенту2? Есть ли лучший способ, чем отправлять запросы на сервер, «спрашивая», есть ли новые сообщения? Можно ли напрямую отправить сообщение клиенту?


person Alon Gubkin    schedule 07.11.2009    source источник


Ответы (3)


Лучшее, что вы можете сделать, это использовать постоянное HTTP-соединение. Так же, как Google использует Google Talk на своем веб-сайте GMAIL.

person Pablo Santa Cruz    schedule 07.11.2009

Помните, что HTTP — это протокол без сохранения состояния, и что каждая транзакция выполняется с клиента. на сервер.

Сервер может использовать сеансы, чтобы определить, является ли этот клиент «известным», но что касается отправки информации обратно клиенту с использованием простого старого HTTP, я думаю, что это невозможно (я имею в виду соединение, инициированное сервером, а не ответ клиенту)

Вам нужно будет использовать Javascript для опроса сервера для получения информации.

Если вы хотите наоборот, вы можете использовать Java или Flash, но тогда вам также нужно подумать о туннелировании NAT, прокси-серверах и любых других странных настройках, которые могут использовать клиенты.

person Wayne    schedule 07.11.2009
comment
Вы определенно можете использовать постоянное HTTP-соединение. Так что я не думаю, что это невозможно. - person Pablo Santa Cruz; 07.11.2009
comment
Спасибо за -1. То, что вы говорите, работает, но я думаю, что ASP.NET ограничен 20 одновременными соединениями PHTTP. Я думаю, вы можете сделать рейз до 100. Это нужно изучить. - person Wayne; 07.11.2009

Нет. Я не думаю, что сервер может отправить сообщение браузеру клиента. Вот как я реализую приложение чата:

  1. client1 отправить сообщение через Ajax на сервер
  2. сервер сохранит его в репозиторий (я использую объект singleton для этого кейс)
  3. client2 получить сообщение из репозитория
  4. отметить сообщение как прочитанное

Я буду сохранять журналы чата в базу данных после закрытия или истечения сеанса чата.

person Anwar Chandra    schedule 07.11.2009