Переходите от socket.io к необработанным websockets?

Прямо сейчас я использую socket.io с обязательными websockets в качестве транспорта. Я думаю о переходе на необработанные веб-сокеты, но мне неясно, какую функциональность я потеряю, переходя из socket.io. Спасибо за любое руководство.

 jfriend0023 июл. 2016 г., 23:34
Почему вы хотите перейти на простые webSockets?
 Myst25 июл. 2016 г., 03:03
Хотя это не по теме и провоцирует дискуссию, основанную на мнениях, я голосую за нее ... Я надеюсь, что вы получите хороший технический ответ и что больше людей узнают о (огромной) разнице между платформами.

Ответы на вопрос(1)

Решение Вопроса

bSockets:

Автоматический выбор длинного опроса и webSocket, если браузер не поддерживает webSockets или если сетевой путь имеет прокси / межсетевой экран, который блокирует webSockets.

Автоматическое переподключение клиента, если соединение обрывается (даже если сервер перезагружается).

Автоматическое обнаружение разорванного соединения (используя обычные пинги для обнаружения неработающего соединения)

Схема передачи сообщений с автоматическим преобразованием в / из JSON.

Концепция серверных помещений, где легко общаться с группой подключенных пользователей.

Понятие соединения с пространством имен на сервере, а не просто соединение с сервером. Это может использоваться для множества различных возможностей, но я использую его, чтобы сообщить серверу, на какие типы информации я хочу подписаться. Это как подключение к определенному каналу.

Структуры данных на стороне сервера, которые автоматически отслеживают все подключенные клиенты, поэтому вы можете перечислять их в любое время.

Архитектура промежуточного программного обеспечения, встроенная в библиотеку socket.io, которая может использоваться для реализации таких вещей, как аутентификация с доступом к файлам cookie из исходного соединения.

Автоматическое сохранение файлов cookie и других заголовков, присутствующих в соединении при его первом подключении (очень полезно для определения того, к какому пользователю подключен).

Возможности широковещательной передачи на стороне сервера для отправки общего сообщения всем подключенным клиентам, всем клиентам в комнате или всем клиентам в пространстве имен.

Пометка каждого сообщения именем сообщения и маршрутизация имен сообщений в eventEmitter, чтобы вы прослушивали входящие сообщения, прослушивая eventEmitter для нужного имени сообщения.

 Myst25 июл. 2016 г., 03:56
@ jfriend00 Я знаю. Я написал сервер веб-сокетов в C. socket.io всегда начинается с длинного опроса. Он обновляет соединение с веб-сокетами на более позднем этапе, поэтому он не является запасным вариантом. Длинный опрос по умолчанию. Кроме того, поскольку все соединения через веб-сокеты начинаются с HTTP, промежуточное программное обеспечение и файлы cookie не зависят от socket.io.
 jfriend0025 июл. 2016 г., 03:51
@Myst - промежуточное программное обеспечение и файлы cookie - это возможности серверной библиотеки socket.io. Если вы используете socket.io, они автоматически включаются. Они не являются частью какой-либо спецификации webSocket, поэтому чтобы иметь эквивалент, вам нужно найти библиотеку webSocket, в которую они также входят. Для меня они являются частью преимуществ использования socket.io по сравнению с обычным стандартным webSocket, о чем и был этот вопрос.
 Myst25 июл. 2016 г., 03:09
Номер 1. это неправильно.socket.io не выполняет возврат к длинному опросу. На самом деле он выполняет медленное соединение с веб-сокетами, поэтому всегда запускается с использованием XHR.
 Myst25 июл. 2016 г., 03:07
Промежуточное программное обеспечение и файлы cookie - это не просто функция socket.io, а общие функции фреймворка, которые, вероятно, будут доступны и в других фреймворках ... кроме того, он имеет мало (если вообще что-то) общего со слоем websocket и больше - с слой http. Я хотел бы предложить, чтобы они были исключены из списка. Сказав это, хороший ответ ... хотя я хотел бы больше технических деталей на некоторые вещи.
 boom24 июл. 2016 г., 00:32
Это отличный список, большое спасибо за информацию.
 jfriend0025 июл. 2016 г., 03:58
@Myst - Ну, это зависит от настроек, которые вы используете для подключения. Вы можете попросить его начать с веб-сокета прямо сейчас. Я изменю свою формулировку. Я просто говорю, что связующее ПО для webSocket и доступ к файлам cookie из любого сообщения - это функции библиотеки socket.io, которых нет ни в одной из библиотек webSocket, которые я видел. Если вы используете socket.io, вы получаете эти функции на стороне сервера специально для ваших соединений socket.io, что проще, чем пытаться использовать инфраструктуру вашего http-сервера для той же функциональности. Это полезное преимущество библиотеки socket.io.
 jfriend0025 июл. 2016 г., 03:49
@Myst - socket.io абсолютно поддерживает длинные опросы, если браузер не поддерживает webSockets. И, возможно, вы захотите понять, что ВСЕ соединения webSocket начинаются с обычного HTTP-запроса (в котором установлено несколько пользовательских заголовков). Увидетьstackoverflow.com/questions/31282578/... для получения дополнительной информации. Фактически, socket.io поддерживает несколько транспортов, кроме webSocket. Длинный опрос является одним из них.

Ваш ответ на вопрос