ASP.NET alapon COMET technológia
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?
■ 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?
async, signalR
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.