Mam aplikację, w której użytkownicy mogą zmieniać wartość przełączania między true
a false
za pomocą małego przełącznika/przycisku, a zmiana jest automatycznie wysyłana na serwer bez konieczności wyraźnego naciskania przez użytkownika na coś takiego jak "zapisz".Czy kolejne żądania AJAX są gwarantowane, aby otrzymać je w kolejności?
Teraz, jeśli użytkownik naciśnie przełącznik dwa razy w krótkich odstępach czasu, czy jest możliwe, że serwer odbierze pakiety w nieprawidłowej kolejności, a tym samym zapisze błędną wartość? A przez serwer rozumiem logikę aplikacji działającą na serwerze, a nie stos sieciowy OS.
Wiem, że pakiety TCP są ponumerowane, więc odbierający je OS sortuje je przed przekazaniem ich do aplikacji, a protokół HTTP uruchamia się nad TCP. Jednak część, która mnie interesuje, to, w jakich okolicznościach HTTP tworzy/nie tworzy nowego połączenia TCP.
N.B. Używam jQuery do wysyłania żądań AJAX i zakładam, że są one gwarantowane, że zostaną wysłane w tej samej kolejności co wywołania biblioteki jQuery. Czy to założenie jest ważne?
+1; najłatwiejszą logiką dla takiej wersji może być '(nowa data) .getTime()' –
+1 JavaScript jest jednokrotnym gwintem, dlatego jQuery będzie wysyłać żądania w kolejności, ale nie ma takiej gwarancji, gdy żądania dotrą do serwera. W praktyce prawie zawsze będą, ale nie piszą żadnej logiki, od której zależą. –
@DavidHedlund Watchout: Może to się nie powieść, gdy czas się zmieni (zmiana czasu użytkownika, synchronizacja z serwerem czasu). –