#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, чтобы было более понятно, что такое протокол и поддержка двоичных данных.