#pragma once #include #include #include #include #include #include #include "ws_server.h" namespace habboy_hw_iface { namespace net = boost::asio; // namespace asio using tcp = net::ip::tcp; // from using error_code = boost::system::error_code; // from class websocket_session : public std::enable_shared_from_this { boost::beast::flat_buffer buffer_; boost::beast::websocket::stream ws_; std::vector> queue_; std::shared_ptr p_ws_server_; void fail(error_code ec, char const* what); void on_accept(error_code ec); void on_read(error_code ec, std::size_t bytes_transferred); void on_write(error_code ec, std::size_t bytes_transferred); public: websocket_session(tcp::socket socket, std::shared_ptr p_ws_server); ~websocket_session(); template void run(boost::beast::http::request> req); void send(std::shared_ptr const& i_msg); }; template void websocket_session::run(boost::beast::http::request> req) { ws_.async_accept( req, std::bind( &websocket_session::on_accept, shared_from_this(), std::placeholders::_1)); } } //ns