Builder.cz - Informacni server o programovani

Odběr fotomagazínu

Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!

 

Zadejte Vaši e-mailovou adresu:

Kamarád fotí rád?

Přihlas ho k odběru fotomagazínu!

 

Zadejte e-mailovou adresu kamaráda:



stálé připojení k server

Seznam témat     Nová odpověď

Přihlásit se     Registrace     Zapomenuté heslo

Re: stálé připojení k server

Autor: peta1

12:24:50 23.05.2011

http://www.google.cz/search?q=java+servlet+async+processing

Citovat příspěvek

 

Re: stálé připojení k server

Autor: designerrr

12:29:55 21.05.2011

Jeste mas moznost pouzit bud flash a flash sockety, protoze tema muzes navazat normalni klasicky TCP/IP spojeni.
Nebo pak jestli jak pises, ze mas moznost i ASP.NET, tak jestli se nebranis Jave EE, tak se podivej na Java Servlet 3.0 API a asynchronni zpracovani pozadavku. Bezi na tom treba chat u gmailu a je to presne co potrebujes a co sem koukal, tak je to i celkem jednoduchy na zprovozneni.
Dej si do googlu "java servlet async processing" a hned prvni odkaz. Nevim jak se davaj odkazy.

Citovat příspěvek

 

Re: stálé připojení k server

Autor: roman.hocke

17:40:15 13.05.2011

Netuším jestli nepoužitelný, v takovém množství jsem to nikdy nezkoušel, nicméně při správným nakonfigurování serveru (aby zvládl tolik otevřených spojení zároveň) by to mělo asi jít. Zkus to a poděl se o zkušenosti, díky!

Citovat příspěvek

 

Re: stálé připojení k server

Autor: tommij

17:24:21 13.05.2011

No já musím počítat s cca tisícem připojených, na něco takovýho je to teda nepoužitelný, jo? Druhá možnost je použít ASP.NET se Silverlightem, kterej dokáže vytahovat data z DB kdykoliv, ale tomu se chci pokud možno vyhnout.

Citovat příspěvek

 

Re: stálé připojení k server

Autor: roman.hocke

15:13:59 13.05.2011

Hrozně záleží na provozu. Nikdy jsem to neměl v nějakém silnějším provozu, vždyjen tak 5-10 spojení současně. Většinu času PHP trávilo ve sleep(), čili zátěž serveru víceméně žádná navíc, akorát je problém to že se drží TCP spojení, kterých je možno otevřít jen omezený počet, čili jsou mnohem snadnější DoS útoky a podobně, ale k řešení těchto problémů jsem se zatím nedostal.

Citovat příspěvek

 

Re: stálé připojení k server

Autor: tommij

14:56:17 13.05.2011

Díky za ten kód a postup, určitě si to uložím a jak to budu konkrétně řešit, mrknu se na to. Jen ze zkušenosti, jak je to náročný pro server a pro klienta oproti běžnému ajaxu?

Citovat příspěvek

 

Re: stálé připojení k server

Autor: roman.hocke

14:18:11 13.05.2011

Jenom dodám, že si při masovějším nasazení můžeš koledovat o nedostupnost serveru. Vem si že si 100 lidí zároveň otevře "nekonečné spojení", které zabírají vlákna Apache, chce to promyslet i z téhle stránky.

Citovat příspěvek

 

Re: stálé připojení k server

Autor: roman.hocke

13:52:55 13.05.2011

peta1: Samozřejmě, můžu to pustit v jiném okně, to už je jedno, to se přece odvíjí od toho, co tommij přesně potřebuje a počítám že si to dokáže sám přizpůsobit. U mojí aplikace nebylo potřeba, aby byl výstup longpollu vidět, stačilo, že volal různé JS funkce. Ale nikomu nic nebrání udělat z toho třeba real-time chat :-)

peta1: V čem "bezpečnější"? Byl požadavek na "nekonečné" spojení, tak proč ho ukončovat? :-) Když klient kopne do kabelu, prohlížeč spojení ukončí, navíc kvalitně napsaná klientská aplikace si toho přerušení za chvíli všimne (proto longpoll pravidelně posílá nějaký ACK - viz bod 4) a třeba dá vědět uživateli, to už je zase věc záměrů autora, to neřeším.

Až to budeš programovat, máš naprosto volnou ruku, můžeš při výpadku kabelu ukazovat uživateli fakáče, zapnout USB vodotrysk a samočinně zavolat chlapíka, co přijde "oprafit ta kábel" :-) Já jen ukazuju základ toho, jak se to dá dělat, třešničky na dortě nechť si vyrobí každý po svém.

Citovat příspěvek

 

Re: stálé připojení k server

Autor: peta1

13:41:26 13.05.2011

roman.hocke
Ale ty ten JS muzes spoustet v jinem okne, viz literatura k objektu window. Nemusis to spoustet zrovna uvnitr toho iframe.
Jinak mi prijde bezpecnejsi u aplikace spojeni ukoncit. Kdyz nahodou klient kopne do kabelu a ten vypadne, tak se stane co? Prohlizec spojeni ukonci, iframe se uz vic nenacita, ne? Radeji bych klientovi ukazoval, ze ma spojeni, pripadne cas posledni aktualizace.

Citovat příspěvek

 

Re: stálé připojení k server

Autor: roman.hocke

12:55:00 13.05.2011

Osobně jsem to řešil tak, že jsem vytvořil (dynamicky) IFRAME, ve kterém běžel nekonečný request http://.../longpoll.php. Je potřeba:

1. Zakázat cache:

header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
header('Cache-Control: no-cache');
header('Pragma: no-cache');

2. Donutit server všemi možnými prostředky, aby co nejčastěji flushoval (aby si nesyslil zprávy pro klienta "až jich bude dost"):

apache_setenv('no-gzip', 1);
ini_set('output_buffering', 0);
ini_set('zlib.output_compression', 0);
ini_set('implicit_flush', 1);

3. Ošéfovat IE-čkovic bug (nevím jestli to dělá i v novějších verzích, ale myslím že 8 s tím měla problém), že v dokumentech kratších než 256 bajtů se neobtěžuje spouštět javascript:




Longpoll



...

4. Dále je dobrý čas od času poslat klientovi zprávu, že spojení žije.



5. No a ještě je potřeba zkonfigurovat server, aby neukončoval spojení po vypršení timeoutu (tuším že u PHP je to v php.ini, ale už fakt nevím co jsem tam přesně nastavoval).

6. Klientská strana by si měla pomocí timerů hlídat, zda jí dostatečně často chodí zprávy z toho spojení, aby ho v případě výpadku mohla znovu navázat.

Citovat příspěvek

 

Re: stálé připojení k server

Autor: tommij

12:30:49 13.05.2011

To bych určitě rád. Mám za sebou jeden aukční systém, každou vteřinu volat server je dost náročné, na aktuálně řešený aukční systém bych rád zvolil tuto možnost.
BTW, kdy IE nezlobí :)

Citovat příspěvek

 

Re: stálé připojení k server

Autor: roman.hocke

12:15:06 13.05.2011

Ahoj, něco podobného jsem dělal, ale je potřeba to nastavit hlavně na serveru, aby po vypršení timeoutu spojení neuzavřel (tuším že Apache má standardně 30s?). Plus je potřeba posílat určité http hlavičky a v případě IE ještě odeslat ze serveru na klienta alespoň 512 bajtů, jinak zlobí :-) Máš-li zájem, můžu ti ukázat nějaké detaily.

Citovat příspěvek

 

stálé připojení k server

Autor: tommij

10:51:43 13.05.2011

Ahoj,
rád bych se zeptal, zda JS umí ponechat otevřené připojení k serveru, nebo umí jen pomocí ajaxu otevřít připojení, vrátit data a zase ho zavřít. Například jsem četl o WebWorkers, tak jestli není i nějaká novinka v téhle oblasti.

Citovat příspěvek

 

 

 

Přihlášení k mému účtu

Uživatelské jméno:

Heslo: