недостатки веб-сокетов - PullRequest
37 голосов
/ 03 июня 2011

Я хотел бы знать, какие ограничения существуют при использовании веб-сокетов.

Вебсокеты просто ... мощные. Я не могу представить, что это без недостатков.

Скажите, каково количество пользователей, которые могут одновременно подключиться к серверу (если я создаю игру, и пользователи будут подключаться к игре через WebSockets, что ограничит количество пользователей, способных подключиться в любой момент ?)

Также верно ли, что с каждым дополнительным соединением качество соединений (скорость и тому подобное) будет снижаться?

Ответы [ 2 ]

36 голосов
/ 19 июня 2011

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

1 голос
/ 11 июня 2011

Из того, что я прочитал, похоже, что это связано с HTTP-сервером Push , который я прочитал, что его обычно не рекомендуется использовать, поскольку он создает много соединений на сервере.

Если бы мне пришлось выбирать, я, вероятно, всегда разработал бы механизм опроса клиентов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...