Раскрытие информации - я работаю на Caplin.
На этой странице есть некоторая дезинформация, поэтому я хотел бы попытаться сделать ее более понятной ..
Я думаю, что мы могли бы разделитьсяметоды, о которых мы говорим в три лагеря ..
- Опрос кометы HTTP - включая длительный опрос
- Потоковая передача кометы HTTP - сообщения от сервера к клиенту используют один постоянный сокет без заголовка HTTPнакладные расходы после начальной установки
- Comet WebSocket - один двунаправленный сокет
Я вижу их всех как Comet, поскольку Comet - это всего лишь парадигма, но, поскольку WebSocket появился вместе, некоторые люди хотят относиться к немукак будто он другой или заменяет Comet - но это просто еще один метод - и если вы не удовлетворены только поддержкой последних браузеров, вы не можете просто полагаться на WebSocket.
Что касается производительности, то большинство тестов производительностисконцентрируйтесь на сообщениях от сервера к клиенту - количество пользователей, количество сообщений в секунду и задержка этих сообщений.Для этого сценария нет принципиальной разницы между потоковой передачей HTTP и WebSocket - обе записывают сообщения в открытый сокет с небольшим заголовком или без заголовка или без него.
Длинный опрос может дать хорошую задержку, если частота сообщений низкая.Однако, если у вас есть два сообщения (от сервера к клиенту) в быстрой последовательности, второе не поступит к клиенту, пока не будет сделан новый запрос после получения первого сообщения.
Я думаю, что кто-то коснулся HTTPKeepAlive.Это, очевидно, может улучшить длинный опрос - у вас все еще есть накладные расходы на передачу данных и заголовки, но не всегда на создание сокета.
Где WebSocket должен улучшить HTTP Streaming в сценариях, где больше сообщений от клиента к серверу.Связывание этих сценариев с реальным миром создает немного больше произвольных настроек, по сравнению с простым для понимания «отправкой большого количества сообщений множеству клиентов», который может понять каждый.Например, в торговом приложении создание сценария, в котором вы включаете пользователей, совершающих сделки (т. Е. Сообщения от клиента к серверу), является простым, но результаты немного менее значимы, чем сценарии базового сервера к клиенту.Трейдеры не пытаются совершить 100 сделок в секунду, поэтому вы получите результаты, например: «10000 пользователей получают 100 сообщений в секунду, а также отправляют клиентское сообщение каждые 5 минут».Более интересной частью сообщения от клиента к серверу является задержка, поскольку количество требуемых сообщений обычно незначительно по сравнению с сообщениями от сервера к клиенту.
Еще один момент, о котором кто-то упоминал выше, о клиентах 64 КБ, вы не делаете этого.Нужно сделать что-нибудь умное для поддержки более чем 64k сокетов на сервере - кроме настройки дескрипторов числовых файлов и т. д. Если вы пытались установить соединение 64k с одного клиентского компьютера, это полностью отличается, так как им нужен номер порта для каждогоодин - на стороне сервера это нормально, хотя это и конец прослушивания, и вы можете пойти выше 64k сокетов.