Как NodeJS обрабатывает постоянные соединения без WebSockets? - PullRequest
7 голосов
/ 25 марта 2011

Я действительно новичок в NodeJS (и мне жаль, если я звучу наивно о некоторых вещах), и я копался в исходном коде примера Приложение чата .

Однако мне трудно понять одну вещь. Я знаю, что WebSockets помогает обрабатывать постоянные полнодуплексные двунаправленные соединения. Но как NodeJS управляет постоянным соединением в вышеупомянутом приложении чата без использования WebSockets? И если NodeJS может обрабатывать постоянное двунаправленное соединение, какова функция интеграции чего-то вроде Socket.IO в Node?

Ответы [ 2 ]

8 голосов
/ 25 марта 2011

Помимо WebSockets вы можете использовать метод long polling для создания постоянного соединения между сервером и клиентом.

Длинный опрос является вариацией традиционная техника опроса и позволяет эмулировать информацию нажать с сервера на клиента. С длительный опрос, клиент запрашивает информация с сервера в аналогично обычному опросу. Тем не мение, если на сервере нет информация, доступная для клиента, вместо отправки пустого ответа, сервер держит запрос и ждет для некоторой информации, которая будет доступна. Как только информация становится доступной (или после подходящего времени ожидания) полный ответ отправляется клиент.

Однако он не так эффективен, как WebSockets, но используется потому, что работает в любом браузере, в отличие от WebSockets. Попробуйте посмотреть на эту статью :

Сокращение килобайт данных до 2 байт… и уменьшение задержки с 150 мс до 50 мс намного больше, чем маргинальный. В Фактически, эти два фактора достаточно, чтобы серьезно сделать WebSocket интересно гуглу.

2 голосов
/ 25 марта 2011

Я не знаком с приложением чата.И я не вижу ссылки на размещенную демонстрацию.

NodeJS - это серверная технология.У него нет проблем с родными розетками.Socket.IO - это сочетание технологии на стороне клиента и на стороне сервера.Просто случается использовать NodeJS на стороне сервера.Прелесть этого в том, что он представляет общий коммуникационный API на стороне клиента, независимо от того, какие функции фактически имеет браузер.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...