12 template <
class TServer,
class TSession>
14 : _id(CppCommon::UUID::Generate()),
18 _messages_received(0),
24 template <
class TServer,
class TSession>
28 WebSocketServerCore::connection_ptr con = _server->core().get_con_from_hdl(connection);
29 con->set_message_handler([
this](websocketpp::connection_hdl connection,
WebSocketMessage message)
31 size_t size = message->get_raw_payload().size();
35 ++_server->_messages_received;
36 _bytes_received += size;
37 _server->_bytes_received += size;
42 con->set_fail_handler([
this](websocketpp::connection_hdl connection)
44 WebSocketServerCore::connection_ptr con = _server->core().get_con_from_hdl(connection);
45 websocketpp::lib::error_code ec = con->get_ec();
51 _connection = connection;
55 _messages_received = 0;
66 template <
class TServer,
class TSession>
72 auto self(this->shared_from_this());
73 auto disconnect = [
this,
self, code, reason]()
76 websocketpp::lib::error_code ec;
77 _server->core().close(_connection, code, reason, ec);
84 service()->Dispatch(disconnect);
86 service()->Post(disconnect);
91 template <
class TServer,
class TSession>
92 inline void WebSocketSession<TServer, TSession>::Disconnected()
101 _server->UnregisterSession(
id());
104 template <
class TServer,
class TSession>
107 assert((buffer !=
nullptr) &&
"Pointer to the buffer should not be equal to 'nullptr'!");
108 assert((size > 0) &&
"Buffer size should be greater than zero!");
109 if ((buffer ==
nullptr) || (size == 0))
115 websocketpp::lib::error_code ec;
116 _server->core().send(_connection, buffer, size, opcode, ec);
125 ++_server->_messages_sent;
127 _server->_bytes_sent += size;
132 template <
class TServer,
class TSession>
138 websocketpp::lib::error_code ec;
139 _server->core().send(_connection, text, opcode, ec);
146 size_t size = text.size();
150 ++_server->_messages_sent;
152 _server->_bytes_sent += size;
157 template <
class TServer,
class TSession>
163 websocketpp::lib::error_code ec;
164 _server->core().send(_connection, message, ec);
171 size_t size = message->get_raw_payload().size();
175 ++_server->_messages_sent;
177 _server->_bytes_sent += size;
182 template <
class TServer,
class TSession>
185 onError(ec.value(), ec.category().name(), ec.message());
WebSocketSession(std::shared_ptr< WebSocketServer< TServer, TSession >> server)
Initialize the session with a given server.
C++ Server project definitions.
size_t Send(const void *buffer, size_t size, websocketpp::frame::opcode::value opcode=websocketpp::frame::opcode::binary)
Send data into the session.
bool Disconnect(websocketpp::close::status::value code=websocketpp::close::status::normal, const std::string &reason="")
Disconnect the session.
WebSocketConnection::message_ptr WebSocketMessage
WebSocket message.