Открыть сокет через веб-сокеты

#javascript #html #websocket

#javascript #HTML #websocket

Вопрос:

У меня есть сервер, который создает сокет на порту 8181. Я хотел бы получить доступ к этому сокету с веб-страницы, открытой в Google Chrome 14. Я полагаю, что это невозможно прямым способом. Chrome обеспечивает поддержку веб-сокетов, но не стандартных сокетов. Это правильно?

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

Комментарии:

1. В Node.js Таким образом, вы можете создать как сервер, так и клиент. Вы могли бы создать приложение, которое включает в себя как сервер WebSockets на порту, скажем, 8182, так и клиент, который подключается к порту 8181. Вы просто перенаправляете все входящие данные (после декодирования формата WebSockets) в 8181, а все данные, полученные от 8181, преобразуете в формат WebSockets и передаете клиенту (Chrome).

2. Я хотел бы получить более подробную информацию. Вы создаете свой собственный сервер? Используя сервер, такой как Tomcat или Apache? Сервер приложений GlassFish включает grizzly, который является сервером websocket. Я просто исследую это сейчас. Плохая новость (не должна длиться вечно) заключается в том, что я еще не нашел ни одного рабочего примера.

3. @mamer, на ваш вопрос был дан достаточный ответ?

Ответ №1:

websockify — это универсальный веб-сокет для прокси / моста сокета TCP. Изначально я создал websockify, чтобы позволить noVNC (HTML5 VNC-клиенту) иметь возможность подключаться к серверу VNC без подключения. Но это в целом полезно (не специфично для VNC), поэтому я выделил его в отдельный проект.

В системе UNIX / Linux вы бы запустили websockify следующим образом:

 ./websockify 8080 my_server:8181
  

Порт 8080 в приведенном выше примере является портом для прослушивания подключений к WebSocket. my_server — это имя / IP-адрес вашей системы, в которой у вас есть сервер, прослушивающий порт 8181. Если вы используете websockify в той же системе, что и ваш сервер, вы можете просто использовать localhost вместо ‘my_server’.

Проект websockify также поставляется с библиотекой-оболочкой Javascript, которая называется websock.js . websockify поддерживает новые версии протокола (используемые Chrome 14 и Firefox 6 ), но он также работает со старыми версиями. Однако в более старых версиях протокола нет возможности отправлять необработанные двоичные данные (только UTF-8), поэтому websock.js и websockify работают вместе, чтобы base64 кодировал / декодировал данные (между браузером и websockify) при использовании более старого протокола, чтобы вы все еще могли отправлять необработанные двоичные данные в/ из цели.

Комментарии:

1. Но, основываясь на документации по ссылке на веб-сайт, это не будет работать с Chrome 14.

2. @RogerF. Гей, не уверен, на какую информацию о веб-сайте вы ссылаетесь, но websockify отлично работает с Chrome 14. WebSockify работает как с версиями Hixie, так и со всеми версиями HyBi протокола (т. Е. Он работает со всеми браузерами с любой поддержкой WebSockets).

3. Кстати, я обновил websockify README, чтобы было более понятно, что такое протокол и поддержка двоичных данных.