У меня есть приложение vb.net, которое открывает сокет и слушает его.
Мне нужно связаться через этот сокет с этим приложением, используя javascript, запущенный в браузере. То есть мне нужно отправить некоторые данные в этот сокет, чтобы приложение, которое прослушивает этот сокет, могло принимать эти данные, делать некоторые вещи, используя некоторые удаленные вызовы, получать дополнительные данные и возвращать их в сокет, который нужен моему javascript для прочтите и распечатайте в браузере.
Я пробовал, socket.io, websockify, но ни один из них не оказался полезным.
Отсюда вопрос: возможно ли то, что я пытаюсь сделать? Есть ли способ, которым javascript, запущенный в браузере, может подключаться к сокету tcp и отправлять некоторые данные и прослушивать их, чтобы получить дополнительный ответ данных в сокете и распечатать его в браузере.
Если это возможно, может кто-нибудь указать мне правильное направление, которое поможет мне установить цель.
Ответы:
Что касается вашей проблемы, в настоящее время вам придется зависеть от XHR или веб-сокетов.
В настоящее время ни в одном популярном браузере не реализованы такие API сырых сокетов для javascript, которые позволяют создавать и получать доступ к необработанным сокетам, но черновик реализации API сырых сокетов в JavaScript находится в стадии разработки. Взгляните на эти ссылки:
http://www.w3.org/TR/raw-sockets/
https://developer.mozilla.org/en-US/docs/Web/API/TCPSocket
Chrome теперь поддерживает необработанные сокеты TCP и UDP в своих «экспериментальных» API. Эти функции доступны только для расширений и, хотя и задокументированы, на данный момент скрыты. При этом некоторые разработчики уже создают интересные проекты, используя его, например, этот IRC-клиент .
Чтобы получить доступ к этому API, вам необходимо включить экспериментальный флаг в манифесте вашего расширения. Использование сокетов довольно просто, например:
источник
Это будет возможно через интерфейс навигатора, как показано ниже:
Более подробная информация представлена в документации w3.org tcp-udp-sockets.
http://raw-sockets.sysapps.org/#interface-tcpsocket
https://www.w3.org/TR/tcp-udp-sockets/
Другой альтернативой является использование сокетов Chrome.
Создание связей
Отправка данных
Получение данных
Вы также можете использовать попытку использовать
HTML5 Web Sockets
(хотя это не прямая TCP-связь):http://www.html5rocks.com/en/tutorials/websockets/basics/
Ваш сервер также должен прослушивать сервер WebSocket, такой как pywebsocket, в качестве альтернативы вы можете написать свой собственный, как описано в Mozilla.
источник
Проект ws2s направлен на перенос сокетов в js на стороне браузера. Это сервер websocket, который преобразует websocket в сокет.
принципиальная схема ws2s
пример кода:
источник
См. Jsocket . Сам не пользовался. Прошло более 3 лет с момента последнего обновления (по состоянию на 26.06.2014).
* Использует вспышку :(
Из документации :
источник
Решение, которое вы действительно ищете, - это веб-сокеты. Тем не менее, в проекте Chrome были разработаны некоторые новые технологии, которые являются прямыми TCP-соединениями TCP chromium
источник
Чтобы добиться желаемого, вам нужно будет написать два приложения (например, на Java или Python):
Приложение Bridge, которое находится на клиентском компьютере и может работать как с сокетами TCP / IP, так и с WebSockets. Он будет взаимодействовать с рассматриваемым сокетом TCP / IP.
Серверное приложение (например, JSP / Servlet WAR), которое может взаимодействовать с WebSockets. Он включает по крайней мере одну HTML-страницу (включая код обработки на стороне сервера, если это необходимо), к которой может получить доступ браузер.
Это должно работать так
Примечание 1. Вышеупомянутые шаги являются значительным упрощением и не включают информацию об обработке ошибок и запросах keepAlive в случае, если либо клиент преждевременно отключается, либо серверу необходимо сообщить клиентам, что он завершает работу / перезапускается.
Примечание 2. В зависимости от ваших потребностей эти компоненты можно объединить в один, если рассматриваемый сервер сокетов TCP / IP (с которым связывается мост) находится на том же компьютере, что и серверное приложение.
источник