websocket++ с использованием примера сеанса fastcgi++

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

Я делаю веб-сайты, которые на 100% ajax и хотят использовать веб-сокеты. Fastcgi++ - это все, на что я мог надеяться для требований ajax, но у него нет веб-сокетов, и я выбрал websocket++ вместо libwebsockets, поскольку websocket++ более или менее простой #include, поэтому я предположил, что смогу включить его в fastcgi++.

Я думаю, что разобрался с fastcgi++, и похоже, что большая часть действий происходит в Fastcgipp::Request, а затем Fastcgipp::Http::Sessions для данных сеанса http://www.nongnu.org/fastcgipp/doc/2.1/a00005.html; однако я думаю, что мне нужно сделать то же самое с server::handler websocket++ для обработки веб-сокета https://github.com/zaphoyd/websocketpp/wiki/Creating-Applications-using-WebSocket--, и теперь я потерялся в море.

Введите мою полную неопытность в C++: я думаю, что должен использовать виртуальное наследование, но понятия не имею . Кроме того, если бы я мог даже правильно «подклассировать» оба, как мне убедиться, что они не пересекаются друг с другом?

Пожалуйста, покажите мне базовый пример того, как websocket++ может использовать управление сеансом fastcgi++.


person Community    schedule 05.03.2013    source источник
comment
также, не мог бы кто-нибудь помочь с этим? askubuntu.com/questions/264493/   -  person    schedule 06.03.2013


Ответы (1)


Соединение WebSocket не может быть обработано рабочим процессом запроса/ответа HTTP. Чтобы использовать что-то вроде fastcgi++ как с обычными HTTP-запросами, так и с запросами WebSocket, потребуется какой-то способ распознать рукопожатие WebSocket и передать его другому обработчику, а не обрабатывать его как HTTP. Я не вижу очевидного сквозного режима в его документации, но я мог что-то упустить.

Если такая функция существует, WebSocket++ можно использовать в потоковом режиме, когда он отключает все свои сетевые элементы и просто обрабатывает потоки байтов, поступающие из другой сетевой библиотеки.

Некоторые альтернативы:

  • WebSocket++ поддерживает сквозную передачу HTTP. По сути, это противоположно тому, что описано выше. WebSocket++ будет использоваться в качестве сетевого уровня. Он будет обрабатывать входящие соединения WebSocket и передавать HTTP-запросы какой-либо другой подсистеме.
  • WebSocket++ и fastcgi++ могут работать на разных портах или разных именах хостов. Это можно сделать в той же программе или в отдельных программах. С запросами на стороне клиента, направленными на соответствующий хост/порт.

Отказ от ответственности: я автор WebSocket++

person zaphoyd    schedule 06.03.2013
comment
Вскоре после того, как я задал этот вопрос, меня осенило, что я все равно должен делать 100% веб-сокеты. лол Большое спасибо за ответ!!! - person ; 06.03.2013