ugrás a tartalomhoz

ASP.NET alapon COMET technológia

vary88 · 2014. Jan. 29. (Sze), 19.31
Sziasztok, lenne egy elég hardcore kérdésem.

ASP.NET alapon lenne szükség a következő probléma megoldására.

A célfügvény az lenne, mint amit a facebook-nál már megszokhattunk, hogy értesítést kapunk azonnal ha üzenet jött.
Ehhez a szerver oldal felől kell adatot pusholnunk a kliensoldal felé (ami a szó szoros értelmében lehetetlen, azonban van erre technika)

Ez a gyakorlatban egy bizonyos Comet technológiával működik, aminek a működési alapelve, hogy a kliensoldal küld a szerveroldalnak egy úgynevezett "Longed live Request"-et, amiben nem kapja meg azonnal a választ, hanem mint a
neve is sugallja, nyitva marad a kérés (persze nem végtelenségig, de ha time out-ot kap, akkor max küld egy újat).
A dologra többféle megoldás is létezik, nekem a legszimpatikusabb a long polling.
Kliensoldalon ez a következőképpen néz ki:

function long_polling() {
$.getJSON('/Test.aspx', function (events) {
processEvents(events);
long_polling();
});
}
long_polling();

Na most a kérdés az, hogy szerver oldalon nekem mi a teendő? Csak nem tehetem végtelen ciklusba a szerveroldalt (még ha egy webservice-ről is lenne szó) amíg nem érkezik új üzenetem, nemigaz? Vagy ez járható úgy?
 
1

async, signalR

szg · 2014. Jan. 29. (Sze), 21.10
Nem ajánlom, egyrészt async eseménykezelőket/metódusokat kell írnod, mert így egy felhasználó blokkol egy egész threadet. Egy idő után az IIS (gyanítom azt használsz) kifogy a kiadható threadekből.

A signalR pont a te problémádra van, tele van a net tutorialokkal. Ez egy push technológia .net környezetben, ami szinte az össszes létező böngészőt támogatja.