Autor | Zpráva | ||
---|---|---|---|
Darker Profil |
#1 · Zasláno: 13. 11. 2011, 20:24:09 · Upravil/a: Darker
Asi před dvěma měsíci jsem narazil při long polingu (chat) na tento problém:
Zatímco se čekalo na zprávy ze serveru, odeslal uživatel zprávu. Ale ta se (aspoň přes ajax) nenechá odeslat do chvíle, než se ukončí 5sekundové čekání na nové zprávy. Vytvořil jsem proto jinou metodu, kde místo post požadavku načítám javascriptový soubor (normálně element). No, nepomohlo to. POST požadavek dál trčí až do chvíle, než se načte skript. To nelze načítat více dat současně? A pokud ne, nelze ukončit načítání bez odpovědi, a přednostně odeslat zprávu? Edit: Někdy se dokonce stane, že se požadavek úplně zasekne a nedostane se na něj řada. |
||
Časová prodleva: 5 dní
|
|||
Chamurappi Profil |
#2 · Zasláno: 18. 11. 2011, 14:58:52
Reaguji na Darkera:
„To nelze načítat více dat současně?“ Myslím, že lze. Jestli komunikaci někdo omezuje, tak to není prohlížeč. Asi by se hodila ukázka. |
||
Časová prodleva: 29 dní
|
|||
Darker Profil |
#3 · Zasláno: 17. 12. 2011, 14:03:47 · Upravil/a: Darker
Chamurappi:
„Asi by se hodila ukázka.“ Běží mi to na localhostu, nicméně stejné problémy jsem měl online. Prohlížeč to asi nedělá. Problém jsem částečně vyřešil tím, že jsem před odesláním nové zprávy do chatu zrušil metodou abort požadavek čekající na nové zprávy. Nicméně i tak to chvíli čeká, nevím na co. Pokud načítání nových zpráv zakážu, odesílá se to okamžitě. Na odesílání i příjem používám lehce upravené "univerzální funkce pro ajax" z digitálního citrónu. Všiml jsem si že při příjmu nových zpráv se data přijmou a pravděpodobně nějak dají zpracovávat ještě před ukončením requestu. Bylo by príma kdybych mohl po přijetí nové zprávy pokračovat v načítání a poslat ji klientovi, ale nejsem si jistý jak s tím pracovat. Taky by mě zajímalo, jak to udělám, když chci podržet spojení ale zaslat nový požadavek. Tedy například ukončit čekání na zprávy a zaslat vrámci daného spojení novou zprávu. Přeskočil bych tak potřepání rukou a bylo by to rychlejší. |
||
Darker Profil |
#4 · Zasláno: 18. 12. 2011, 14:12:32 · Upravil/a: Darker
Tady je ukázka:
http://chat.jmareda.tk/index.php Pokud si pustíte firebug nebo dragonfly, uvidíte, že se příspěvek odesílá dlouho. Pokud potom vypnete načítání nových požadavků příkazem: chat.abort(); chat.active=true; //Aby vam to dovolilo psat i pro Offline stavu |
||
Časová prodleva: 11 dní
|
|||
YOYO Profil |
#5 · Zasláno: 29. 12. 2011, 19:20:51
nedávno sem řešil podobný problém,.. to že server nemohl zpracovat 2 požadavky najednou bylo díky sessions (po celý běh scriptu jsou otevřené pro zápis a nemůže tak do nich zapisovat jiný script) pomohla mi funkce
session_write_close();
|
||
Časová prodleva: 12 let
|
0