Ответ 1
Преимущества и недостатки, конечно, будут зависеть от конкретного варианта использования, но я попытаюсь указать некоторые различия между 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 быстро развивается, многие реализации все еще основаны на более старых черновиках, и некоторые детали могут измениться до того, как они будут завершены.