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

Трябва да напиша уеб приложение за чат Ajax в ASP.NET за приятел и имам въпрос: ако client1 изпрати съобщение до client2, как приложението трябва да изпрати съобщението до client2? Има ли по-добър начин от изпращането на заявки до сървъра, "питайки" дали има нови съобщения? Възможно ли е директно изпращане на съобщението до клиента?


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