Использование WebSockets ... Эффективно? - PullRequest
14 голосов
/ 01 июня 2011

Я прочитал почти все руководства и учебники, которые я могу найти в WebSockets, но ни один из них не рассказал о том, как их эффективно использовать.

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

1 Ответ

26 голосов
/ 02 июня 2011

Эффективность в WebSocket зависит от реализации и архитектуры веб-сервера, который их обрабатывает. WebSocket - это очень эффективный протокол с накладными расходами всего в 2 байта (!), По сравнению со всеми различными полями HTTP-заголовка и HTTP-cookie , которые отправляются в каждом запросе Ajax.

Обычно эффективный веб-сервер для веб-сокетов должен управляться событиями (см. Примеры ниже). Напротив, традиционным способом реализации веб-серверов было создание нового потока для каждого запроса. Но потоки выделяют много памяти, например 256 МБ на поток. Так что если у вас есть 1 ГБ памяти на вашем сервере, вы не можете обрабатывать очень много запросов одновременно. Но если ваш сервер управляется событиями, ваше использование памяти будет почти постоянным, поскольку новые потоки не создаются. См. Также Технически, почему процессы в Erlang более эффективны, чем потоки ОС?

Вы можете отправлять любые данные в свои WebSockets. JSON эффективен, если клиент является веб-браузером или, возможно, типизированными массивами . Если ваш клиент является пользовательским приложением, вы можете использовать Protocol Buffers . См. Также Технический документ по протоколу клиент-сервер Google Wave

Вы можете реализовать эффективные серверы веб-сокетов, используя Twisted (Python) или Netty (Java). Play Framework - эффективный веб-фреймворк для Java и Scala, реализованный в Netty. Другой эффективной альтернативой является веб-сервер Yaws (Erlang) или Node.js + Socket.io (JavaScript).

Как разработчик приложения, чем меньше данных вы отправляете, тем эффективнее (меньше трафик) и меньше нагрузка на ваш сервер.

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