Как туннелировать веб-сокеты через TCP в узле?
Я пытаюсь туннелировать веб-сокеты через TCP. Я знаю, как туннелировать HTTPS - "Connect URL:port" - это то, с чего я начинаю. Оттуда открывается сокет для цели, а затем просто канал между клиентом и целью. С чего начать с веб-сокетов? существует ли что-то похожее на "Connect url:port", которое я могу перехватить на моем http-сервере, а затем выполнить некоторую обработку обновления?
1 ответ
Вы уверены, что хотите туннелировать WebSocket через TCP? WebSocket работает через TCP.
Я думаю, вы имеете в виду, что вы хотите туннелировать TCP-трафик с WebSocket, то есть взять существующее традиционное приложение на основе Socket и заставить его работать через Интернет. Если это то, что вы имеете в виду, вы по сути помещаете свои данные TCP в фрейм WebSocket, а на принимающей стороне читаете фрейм WebSocket и извлекаете данные. Конечно, это легче сказать, чем сделать. Вы должны убедиться, что вы правильно создали фрейм WebSocket на стороне отправителя (также обрабатывает поток данных TCP, что также может быть сложным), зашифровали данные (это происходит через Интернет, верно?) И на принимающей стороне прочитайте Рамка WebSocket, извлекающая данные из правой части рамки. А также вам необходимо проверить, все ли данные находятся в одном кадре WebSocket или в нескольких кадрах.
Как я уже сказал, это не так просто.
Существует несколько библиотек WebSocket, которые могут (или не могут) обрабатывать все это за вас (многие не обрабатывают ситуацию с несколькими фреймами WebSocket).