Эффективность в 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).
Как разработчик приложения, чем меньше данных вы отправляете, тем эффективнее (меньше трафик) и меньше нагрузка на ваш сервер.