Преимущества и недостатки, конечно, будут зависеть от конкретного варианта использования, но я постараюсь указать на некоторые различия между WebSocket и HTTP.
WebSocket является более сложным, чем HTTP.Вы можете установить HTTP-соединение с клиентом telnet, но вы, вероятно, не можете сделать то же самое с WS.Даже если вы проигнорируете требования рукопожатия (которые включают использование хэш-функции SHA1), вы не сможете должным образом замаскировать и сформировать данные для отправки, и сервер закроет соединение.
КакПо словам Уве, соединения WebSocket должны быть более постоянными, чем HTTP-соединения.Если вы хотите получать обновления каждые 30 минут, вам нужно использовать HTTP.Если вы хотите получать обновления каждую секунду, лучше использовать WebSocket, поскольку установление HTTP-соединения занимает много времени.
Чтобы установить HTTP-соединение, сначала необходимо установить TCP-соединение (SYN, SYN / ACK, ACK), затем отправьте запрос GET с довольно большим заголовком, а затем, наконец, получите ответ сервера (вместе с другим большим заголовком).
С открытым WebSocket вы просто получите ответ (неттребуется), и он поставляется с гораздо меньшим заголовком: от двух байтов для маленьких кадров, до 10 байтов для смехотворно больших кадров (в диапазоне гигабайт).
Вам необходимо взвесить две стоимости (сохраняясоединение, открытое и устанавливающее новое соединение), для выбора между двумя протоколами.
Примечание: этот ответ основан на текущем проекте протокола (draft-ietf-hybi-thewebsocketprotocol-09).WebSocket быстро развивается, многие реализации по-прежнему основаны на более старых черновиках, и некоторые детали могут измениться до того, как он будет завершен.