XMLHttpRequest срещу Socket срещу някакъв друг подход

Прочетох, че XMLHttpRequests са най-подходящи за съдържание, което има честота на актуализиране от 30 секунди или повече. В същата статия се споменава, че уеб приложенията, които се нуждаят от по-бърза честота, трябва да използват сокет. Не мога да намеря статията/книгата, в която се споменава това (ако някой може да публикува връзки към статии, които обсъждат това, ще съм благодарен). Вашият опит с XMLHttpRequest и сокети подкрепя ли горното твърдение или не? Какви други видове връзки между браузъра и сървъра трябва да се имат предвид?


person zooropa    schedule 30.06.2009    source източник


Отговори (3)


Javascript няма начин да осъществява истински сокет комуникации. Ако сте заключени само в Javascript (без SWF помощник, ActiveX или някаква друга технология), тогава XMLHttpRequest е най-добрият ви залог.

XMLHttpRequest не е много подходящ за по-чести актуализации (поне на теория) поради режийните разходи, свързани с анализирането и формирането на заявката и анализирането на резултатите. На теория Socket връзката ще ви даде канал обратно към сървъра, без да преминавате през цялото генериране на заявки.

Недостатъкът на използването на Sockets (освен факта, че Javascript не ги поддържа директно) е, че ако използвате персонализиран формат за сериализиране за данните, връщащи се през Socket връзката, само кодът, който пишете, може да консумира резултатите (освен ако не сте публични вашия формат за сериализация). Това може да не е проблем за вас, но за някои е шокиращо...

Ето малка демонстрация на Sockets в Javascript с SWF Helper:

SocketJS

person Justin Niessner    schedule 30.06.2009

Отговорът е нещо повече от честота на актуализиране. Броят на едновременните потребители също е важен, тъй като се използва Comet (това е ключовата дума което ще ви отведе до повече статии) използва връзки със сървъра и може да не се мащабира добре. Съвременните уеб сървъри се справят по-добре с повече връзки, но трябва да тествате това във вашата собствена среда.

За мен дори 30 секунди са твърде често, за да използвам AJAX. Моят лимит вероятно е около една минута.

person D'Arcy Rittich    schedule 30.06.2009

Тази статия вече трябва да се счита за датирала. Съвременните браузъри нямат проблеми с обработването на заявки за 1 секунда. Вижте колко бързо Google може да познае вашето търсене. Просто извикване на XMLHttpRequest. Без светкавица. Няма ActiveX.

person Hawk    schedule 04.03.2015