Вопрос

Я использую node.js и socket.io. У меня есть проблема со скоростью соединения с Socket.io. В Internet Explorer и Opera у меня есть проблема со скоростью соединения. - Когда я использую FlashSocket или WebSocket. Когда я использую режим транспортного подключения XHR, быстро - во всех браузерах (то есть FF, Chrome, Opera).

В чем разница между видом транспорта - xhr -polling и flash / websocket? Какой лучший способ транспорта? Как оптимизировать скорость соединения Socket.io?

Спасибо за совет!

Это было полезно?

Решение

Я был бы удивлен, если общая скорость соединения с течением времени отличалась между веб -браузерами, но причина, по которой вы увидите задержку в первоначальном соединении в Internet Explorer и в Opera, заключается в том, что поддержка Native WebSocket не доступна, поскольку она была Отключено по умолчанию. Таким образом, если вы выберете FlashSocket, то необходимо будет загрузить дополнительный объект Flash (файл SWF) до установки соединения.

Вебсокеты вводятся в IE10, а в опере они доступны, но отключены по умолчанию.

В чем разница между видом транспорта - xhr -polling и flash / websocket?

  • Xhr -polling - см http://en.wikipedia.org/wiki/push_technology#long_polling
  • Подключение FlashSocket - использует объект Flash Socket для установления соединения с сервером WebSocket и связи с использованием протокола WebSocket. Это означает, что существует взаимодействие между Flash и JavaScript, а также означает, что должен быть загружен дополнительный объект Flash (файлы SWF).

Какой лучший способ транспорта?

ВЕБСОКАТЫ для любого веб -браузера, который изначально поддерживает его (Chrome, Firefox, Safari). Если объект Flash (файл SWF) находится в кэше браузера, то соединение должно быть быстро. Если это не так, то будет задержка. Длинное заполнение XHR является хорошим решением и будет работать с Cross Browser, но есть негативы:

  • Между запросами опроса данные на дисплее могут быть устаревшими (несвежими).
  • Это менее эффективный метод подключения, чем одно соединение TCP, используемое веб-токцами, поскольку HTTP Long-Collling использует несколько соединений для моделирования двунаправленной функциональности
  • У HTTP есть накладные расходы, что означает, что дополнительная информация заголовка отправляется по запросу, и каждый последующий запрос.

Как оптимизировать скорость соединения Socket.io?

(Я довольно новичок в Socket.io к этому - это просто предложение)

Я бы посмотрел на Настройка Docs Socket.io и посмотреть, сможете ли вы условно установить transports на основе браузера, который соединяется. Исходя из вашего опыта, это может быть:

  • Chrome, Firefox, Safari - Websockets
  • Т.е. Opera - xhr -polling

Другие советы

Чтобы сократить время подключения, вы можете попытаться уменьшить тайм -аут подключения (который по умолчанию составляет 10 секунд), используя параметр «Подключение времени ожидания».

Например, чтобы уменьшить тайм -аут подключения до 1 секунды:

socket = io.connect('http://your-site.com',{'connect timeout': 1000});
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top