Портирование серверного кода node.js в HTML5 WebSockets - PullRequest
4 голосов
/ 16 ноября 2010

Примечание. Речь идет не об использовании обоих сокетов node.js и HTML5.Меня также не интересует обсуждение преимуществ описываемой мной установки.

node.js запускается на сервере и, поскольку он поддерживает подключение через сокеты в качестве клиента ,он может выступать в качестве промежуточного уровня между клиентом HTML5 / JS и сервером, который использует TCP / IP (например, сервер базы данных). Таким образом, и node.js, и WebSockets включают в себя способы открытия соединений сокетов с сервером.

Мой вопрос: кто-нибудь успешно перенес сценарий node.js в WebSockets, т. Е. Вырезал из уравнения node.js, чтобы ваш веб-браузер напрямую подключался к базе данных?Я предполагаю, что это будет выглядеть так:

  1. исключит все, что связано с HTTP
  2. портирование использования всех специфичных для node.js функций для использования API WebSockets

Если это было сделано, было ли это много проблем или API-интерфейс node.js и WebSockets был относительно похожим?

1 Ответ

4 голосов
/ 16 ноября 2010

Ваш вопрос немного сложен для разбора, но я возьму ответ.

Если вы заинтересованы в подключении клиента (браузера) WebSockets к произвольному серверу сокетов TCP, то вам может быть интереснов wsproxy , который является универсальным прокси для сокетов WebSockets to TCP.wsproxy включен в noVNC (клиент HTML5 VNC) и имеет три эталонные реализации на C, python и Node (node.js).

Если вы заинтересованы в добавлении поддержки WebSockets в конкретныйданный сервер (т. е. сервер базы данных), тогда вы можете найти этот форк libvncserver .Он поддерживает клиентов, которые говорят на WebSockets (то есть noVNC), поэтому прокси-сервер не требуется.

Основные функции прокси-сервера wsproxy были довольно просты для реализации.Самое сложное в том, что текущий используемый черновик WebSockets (v76) не определяет полезную нагрузку двоичной передачи (только UTF-8), поэтому wsproxy base64 кодирует / декодирует весь трафик в / из клиента WebSockets.Реализация соединений WebSockets в libvncserver была несколько более хитрой, потому что у libvncserver есть довольно жестко запрограммированные идеи о буферизации / кадрировании, которые нужно было обойти.

Отказ от ответственности: я отвечаю за noVNC, wsproxy и WebSocketsпатчи к libvncserver.

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