Подтвердить что ты не робот

Какая разница между engine.io и socket.io?

Пожалуйста, исправьте меня, если этот вопрос является дубликатом. Что касается node.js, я использую socket.io для подключения к сокету реального времени из клиентского приложения в серверное приложение. Я только что слышал о engine.io, является ли engine.io заменой для socket.io? Я не нашел полезной информации на сайте engine.io.

Заранее спасибо

4b9b3361

Ответ 1

engine.io - это библиотека более низкого уровня, чем socket.io.

Двигатель предназначен для Socket.IO, что Connect для Express.

Если вы хотите абстракцию более низкого уровня, используйте engine.io. Если вы хотите абстракцию websocket, продолжайте использовать socket.io.

engine.io больше интересует вас, если вы создаете библиотеку/фреймворк поверх socket.io.

socket.io вас больше интересует, если вы создаете приложение поверх socket.io.

Ответ 2

socket.io построен поверх engine.io.

socket.io - engine.io с колоколами и свистами.

если вам не нужно все socket.io(redis store, groups и т.д.), просто используйте движок.

Ответ 3

Немного поздно в игре:-), но я расскажу об этом здесь для потомков.

Помимо "нижнего уровня", одним из наиболее важных различий является socket.io, сначала начинается с веб-сайтов и ухудшается, пока не найдет транспорт, который может работать. С другой стороны, engine.io начнет с короткого опроса (и обновится сбоку до тех пор, пока он не ударит по стене).

Почему?

С точки зрения пользователя неудачное соединение WebSocket может транслироваться в течение как минимум 10 секунд ожидания приложения реального времени для начала обмена данными. Это ощутимо вредит пользователю.

В настоящий момент (2013) веб-порты еще не распространяются (например, старые браузеры, сотовые сети и т.д.), поэтому он умный, чтобы начать с XHR 1st.

Подробнее см. https://github.com/LearnBoost/engine.io (раздел "Цели" ).

Ответ 4

Socket.IO v0.9 устарел и немного глючит, а Engine.IO является временным преемником. Socket.IO v1.0 (который будет выпущен в ближайшее время) будет использовать Engine.IO и будет намного лучше, чем v0.9.

В моих тестах Engine.IO оказался лучше, чем Socket.IO v0.9, см. сравнение: https://medium.com/node-js-javascript/b63bfca0539

Socket.IO пытается повторно подключиться в течение некоторого времени после потери соединения, тогда как Engine.IO не работает.

Socket.IO поддерживает комнаты, в то время как Engine.IO нет. Вам понадобятся комнаты (либо с помощью этих модулей, либо с вашей собственной реализацией), если у вас будут подключения, прослушивающие разные данные/канал.