Я экспериментировал hashicorp / yamux над гориллой / websocket и застрял.
Я начал с ванильного WebSocket, используя пример echo из проекта Gorilla WebSocket. Это была очень простая настройка клиент-сервер. Затем представьте себе, что сервер теперь находится за брандмауэром, поэтому клиент не может установить прямое соединение с ним. Поэтому я представил хаб и агент . концентратор должен быть общедоступным и подключаемым для клиента . агент будет работать вместе с сервером , который сначала установит соединение WebSocket с хабом , а затем мультиплексирует соединение, используя Yamux, чтобы хаб может затем инициировать запросы к серверу . Таким образом, я эффективно «выставил» сервер за брандмауэр.
Для обычных конечных точек HTTP все хорошо. клиент может отправлять запросы к хабу , который передает эти запросы прокси агенту , используя соединение WebSocket, инициируемое хабом , и затем концентратор будет далее передавать эти запросы на сервер .
Однако этот прием не работал с конечными точками WebSocket. Например, клиент может получить доступ к HTML на /
через цепочку агент-хаб-агент , но произойдет сбой на пути /echo
, который конечная точка WebSocket.
Мой вопрос: этот WebSocker поверх Yamux поверх WebSocket принципиально невозможен, или мне просто нужны дополнительные строки, чтобы все заработало? Вот код Я экспериментировал. Очень ценю вашу помощь!