Files
asio_web/test/webserver_example/websocketresponsehandler.h

41 lines
1.0 KiB
C
Raw Permalink Normal View History

2022-06-30 05:59:32 +02:00
#pragma once
#pragma once
// system includes
#include <string_view>
#include <string>
#include <system_error>
// 3rdparty lib includes
#include <asio_web/responsehandler.h>
2022-06-30 05:59:32 +02:00
// forward declarations
class ClientConnection;
class WebsocketResponseHandler final : public ResponseHandler
2022-06-30 05:59:32 +02:00
{
public:
WebsocketResponseHandler(ClientConnection &clientConnection);
~WebsocketResponseHandler() override;
2022-06-30 05:59:32 +02:00
void requestHeaderReceived(std::string_view key, std::string_view value) final;
void requestBodyReceived(std::string_view body) final;
void sendResponse() final;
private:
void writtenHtmlHeader(std::error_code ec, std::size_t length);
void writtenHtml(std::error_code ec, std::size_t length);
void writtenWebsocket(std::error_code ec, std::size_t length);
2022-06-30 05:59:32 +02:00
ClientConnection &m_clientConnection;
std::string m_response;
bool m_connectionUpgrade{};
bool m_upgradeWebsocket{};
std::string m_secWebsocketVersion;
std::string m_secWebsocketKey;
std::string m_secWebsocketExtensions;
};