Takže jsem to vyzkoušel. Stačil k tomu prakticky jenom Wireshark.
Jak pro SDS, tak pro PC (Firefox) se to celé chová časově úplně stejně.
Tzn. je tam to zpoždění tak jak se vám nelíbí, bez ohledu na zařízení (PC, SDS, atd).
SDS se chová správně a chyba v něm není.
Je tam "zpoždění" na straně serveru:
poté co server vyšle paket s "HTTP 200 OK", a přijemce tento paket ihned potvrdí (TCP ACK),
trvá serveru dalších 5 sekund (!) než udělá něco dalšího (např. zavře TCP spojení).
"Na vině" bude nejspíše nastavení serveru v oblasti Connection:Keep-Alive.
Samozřejmě že dokud TCP spojení není uzavřeno, tak SDS čeká na příjem dat (do počtu, který jste ve svém programu nastavil), nebo čeká na uzavření spojení (timeout na straně SDS což je 45sec, nebo uzavření ze strany serveru, což je v tomto případě změřených 5sec).
Pozor ale, je to vlastnost respektive nastavení serveru, není to chyba.
Poznámka:
SDS je naopak v jedné záležitosti rychlejší (tj. umí něco, co např. na PC ani nejde):
a to když se mu dá příkaz nečekat na http data.
V takovém případě SDS slušně a správně uzavře spojení samo hned po HTTP200OK/ACK a pak si pokračuje ve své činnosti,
takže se pak zdá že je celá věc mnohem rychlejší.
Bližší popis toho co se děje:
Podle zdrojového FC kódu vašeho testovacího programu, říkáte SDS ať čeká na 5 datových bajtů ze serveru.
Podle zachycené odpovědi posílá váš server jen 3 bajty (tyto tři znaky: "N"), takže SDS správně čeká na zbylé dva (které ale nepřijdou; a server po pěti vteřinách sám ukončí spojení a tím také odblokuje SDS, které pak správně hlásí že přijalo 3 znaky).
Samozřejmě nastavení 5 nebo více znaků je v pořádku, pokud ze serveru přijde méně tak je to také platná odpověď a SDS to zpracuje a předá správně.
Jen je potřeba si uvědomit, že takto nastavený server způsobí čekání na straně SDS, což je vše přesně podle specifikace.
Pro zajímavost, udělejte si vlastní záchyt pomocí wiresharku u sebe doma.
A nepotřebujete k tomu ani SDS, jde to jasně vidět i když na server půjdete z prohlížeče.
Zde je příklad:
No. Time Source Destination Protocol Length Info
01 4.619124 SDS SERVER TCP 58 61050 → http(80) [SYN] Seq=0 Win=1446 Len=0 MSS=1260
02 4.652073 SERVER SDS TCP 60 http(80) → 61050 [SYN, ACK] Seq=0 Ack=1 Win=29200 Len=0 MSS=1440
03 4.654216 SDS SERVER HTTP 150 GET /homepage/?do=getrfid&id=0AF45B12&op=r HTTP/1.1
04 4.657070 SDS SERVER TCP 54 61050 → http(80) [ACK] Seq=1 Ack=1 Win=1446 Len=0
05 4.686264 SERVER SDS TCP 60 http(80) → 61050 [ACK] Seq=1 Ack=97 Win=29200 Len=0
06 4.686333 SERVER SDS TCP 60 [TCP Dup ACK 12#1] http(80) → 61050 [ACK] Seq=1 Ack=97 Win=29200 Len=0
07 4.789677 SERVER SDS HTTP 777 HTTP/1.1 200 OK (application/json)
08 4.792441 SDS SERVER TCP 54 61050 → http(80) [ACK] Seq=97 Ack=724 Win=1446 Len=0
09 9.800635 SERVER SDS TCP 60 http(80) → 61050 [FIN, ACK] Seq=724 Ack=97 Win=29200 Len=0
10 9.802843 SDS SERVER TCP 54 61050 → http(80) [FIN, ACK] Seq=97 Ack=725 Win=1446 Len=0
11 9.837583 SERVER SDS TCP 60 http(80) → 61050 [ACK] Seq=725 Ack=98 Win=29200 Len=0
Právě mezi paketem No. 08 (to je ACK od SDS) a paketem No. 09(to je uzavření spojení od serveru) je těch 9.80 minus 4.79 sekund, tj. 5 sekund čekání (což je nastaveno ve vašem serveru).
Pochlubte se - popište jak využíváte své zařízení SDS zde ! Můžete si bezplatně přidat svou reklamu !