Переключение на веб-розетку от простого сокета Беркли - PullRequest
0 голосов
/ 17 января 2020

У меня есть простая реализация сокетов, которая использует стандартные низкоуровневые функции сокетов Беркли (связывание, прослушивание, принятие, чтение и т. Д. c).

Этот сокет прослушивает порт, скажем, X.

Теперь я пытаюсь добиться того, чтобы Simple-WebSocket-Server прослушивал также этот порт X.

Конечно, это не возможно по своей природе - я знаю.

Мое намерение таково: В моей простой реализации сокетов я бы обнаружил, подключен ли клиент (после принятия) это мой клиент или веб-сокет, тогда, если я обнаружу, что клиент является веб-сокетом, я передам все это в эту библиотеку, чтобы вести себя так же, как если бы он принял этот клиент.

Что было бы хорошо, чтобы передать fd сокета вместе с первыми байтами, которые мой сокет прочитал, прежде чем заметил запрос websocket.

Я немного застрял, было бы лучше всего сделать это, но я не не хочу переопределять всю паутину вещи наверняка.

1 Ответ

1 голос
/ 17 января 2020

Хитрость здесь в том, что Simple-WebSocket-Server делает свой собственный accept, поэтому я не могу найти способ передать ему fd вместе с массивом «первых байтов».

Некоторые подходы, которые я мог бы придумать:

  • модифицировать Simple-WebSocket-Server, чтобы вместо закрытия клиента без WS или тайм-аута он делал позвоните в свою библиотеку

  • вместо этого используйте что-то вроде websocketpp , чтобы создать свой собственный сервер веб-сокетов, а затем выберите один из двух серверов (я сделал что-то похожее для одного из моих собственные проекты, где я должен был определить протокол сокета из первого байта, а затем выбрать соответствующий обработчик протокола wamp cc селектор протокола )

  • или вы может попытаться прослушать Simple-WebSocket-Server через другой порт Y; вы также прослушиваете X, и если обнаруживаете клиент веб-сокета на X, вы внутренне создаете внутреннюю пару очередей, а затем открываете соединение с localhost:Y и переходите к передаче байтов между парой сокетов; таким образом вам не нужно изменять код Simple-WebSocket-Server.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...