CppServer  1.0.0.0
C++ Server Library
Public Member Functions | Protected Member Functions | Friends | List of all members
CppServer::Asio::WebSocketServer< TServer, TSession > Class Template Reference

WebSocket server. More...

#include <websocket_server.h>

Inheritance diagram for CppServer::Asio::WebSocketServer< TServer, TSession >:

Public Member Functions

 WebSocketServer (std::shared_ptr< Service > service, InternetProtocol protocol, int port)
 Initialize WebSocket server with a given Asio service, protocol and port number. More...
 
 WebSocketServer (std::shared_ptr< Service > service, const std::string &address, int port)
 Initialize WebSocket server with a given Asio service, IP address and port number. More...
 
 WebSocketServer (std::shared_ptr< Service > service, const asio::ip::tcp::endpoint &endpoint)
 Initialize WebSocket server with a given Asio service and endpoint. More...
 
 WebSocketServer (const WebSocketServer &)=delete
 
 WebSocketServer (WebSocketServer &&)=default
 
virtual ~WebSocketServer ()=default
 
WebSocketServeroperator= (const WebSocketServer &)=delete
 
WebSocketServeroperator= (WebSocketServer &&)=default
 
std::shared_ptr< Service > & service () noexcept
 Get the Asio service. More...
 
asio::ip::tcp::endpoint & endpoint () noexcept
 Get the server endpoint. More...
 
WebSocketServerCorecore () noexcept
 Get the WebSocket server core. More...
 
uint64_t current_sessions () const noexcept
 Get the number of sessions currently connected to this server. More...
 
uint64_t messages_sent () const noexcept
 Get the number messages sent by this server. More...
 
uint64_t messages_received () const noexcept
 Get the number messages received by this server. More...
 
uint64_t bytes_sent () const noexcept
 Get the number of bytes sent by this server. More...
 
uint64_t bytes_received () const noexcept
 Get the number of bytes received by this server. More...
 
bool IsStarted () const noexcept
 Is the server started? More...
 
bool Start ()
 Start the server. More...
 
bool Stop ()
 Stop the server. More...
 
bool Restart ()
 Restart the server. More...
 
bool Multicast (const void *buffer, size_t size, websocketpp::frame::opcode::value opcode=websocketpp::frame::opcode::binary)
 Multicast data to all connected sessions. More...
 
bool Multicast (const std::string &text, websocketpp::frame::opcode::value opcode=websocketpp::frame::opcode::text)
 Multicast a text string to all connected sessions. More...
 
bool Multicast (const WebSocketMessage &message)
 Multicast a message to all connected sessions. More...
 
bool DisconnectAll ()
 Disconnect all connected sessions. More...
 

Protected Member Functions

virtual void onStarted ()
 Handle server started notification. More...
 
virtual void onStopped ()
 Handle server stopped notification. More...
 
virtual void onConnected (std::shared_ptr< TSession > &session)
 Handle new session connected notification. More...
 
virtual void onDisconnected (std::shared_ptr< TSession > &session)
 Handle session disconnected notification. More...
 
virtual void onError (int error, const std::string &category, const std::string &message)
 Handle error notification. More...
 

Friends

template<class TSomeServer , class TSomeSession >
class WebSocketSession
 

Detailed Description

template<class TServer, class TSession>
class CppServer::Asio::WebSocketServer< TServer, TSession >

WebSocket server.

WebSocket server is used to connect, disconnect and manage WebSocket sessions.

Thread-safe.

Examples:
websocket_chat_server.cpp.

Definition at line 32 of file websocket_server.h.

Constructor & Destructor Documentation

◆ WebSocketServer() [1/5]

template<class TServer , class TSession >
CppServer::Asio::WebSocketServer< TServer, TSession >::WebSocketServer ( std::shared_ptr< Service service,
InternetProtocol  protocol,
int  port 
)
inlineexplicit

Initialize WebSocket server with a given Asio service, protocol and port number.

Parameters
service- Asio service
protocol- Protocol type
port- Port number

Definition at line 13 of file websocket_server.inl.

◆ WebSocketServer() [2/5]

template<class TServer , class TSession >
CppServer::Asio::WebSocketServer< TServer, TSession >::WebSocketServer ( std::shared_ptr< Service service,
const std::string &  address,
int  port 
)
inlineexplicit

Initialize WebSocket server with a given Asio service, IP address and port number.

Parameters
service- Asio service
address- IP address
port- Port number

Definition at line 40 of file websocket_server.inl.

◆ WebSocketServer() [3/5]

template<class TServer , class TSession >
CppServer::Asio::WebSocketServer< TServer, TSession >::WebSocketServer ( std::shared_ptr< Service service,
const asio::ip::tcp::endpoint &  endpoint 
)
inlineexplicit

Initialize WebSocket server with a given Asio service and endpoint.

Parameters
service- Asio service
endpoint- Server endpoint

Definition at line 59 of file websocket_server.inl.

◆ WebSocketServer() [4/5]

template<class TServer , class TSession >
CppServer::Asio::WebSocketServer< TServer, TSession >::WebSocketServer ( const WebSocketServer< TServer, TSession > &  )
delete

◆ WebSocketServer() [5/5]

template<class TServer , class TSession >
CppServer::Asio::WebSocketServer< TServer, TSession >::WebSocketServer ( WebSocketServer< TServer, TSession > &&  )
default

◆ ~WebSocketServer()

template<class TServer , class TSession >
virtual CppServer::Asio::WebSocketServer< TServer, TSession >::~WebSocketServer ( )
virtualdefault

Member Function Documentation

◆ bytes_received()

template<class TServer , class TSession >
uint64_t CppServer::Asio::WebSocketServer< TServer, TSession >::bytes_received ( ) const
inlinenoexcept

Get the number of bytes received by this server.

Definition at line 81 of file websocket_server.h.

◆ bytes_sent()

template<class TServer , class TSession >
uint64_t CppServer::Asio::WebSocketServer< TServer, TSession >::bytes_sent ( ) const
inlinenoexcept

Get the number of bytes sent by this server.

Definition at line 79 of file websocket_server.h.

◆ core()

template<class TServer , class TSession >
WebSocketServerCore& CppServer::Asio::WebSocketServer< TServer, TSession >::core ( )
inlinenoexcept

Get the WebSocket server core.

Definition at line 70 of file websocket_server.h.

◆ current_sessions()

template<class TServer , class TSession >
uint64_t CppServer::Asio::WebSocketServer< TServer, TSession >::current_sessions ( ) const
inlinenoexcept

Get the number of sessions currently connected to this server.

Definition at line 73 of file websocket_server.h.

◆ DisconnectAll()

template<class TServer , class TSession >
bool CppServer::Asio::WebSocketServer< TServer, TSession >::DisconnectAll ( )
inline

Disconnect all connected sessions.

Returns
'true' if all sessions were successfully disconnected, 'false' if the server it not started

Definition at line 284 of file websocket_server.inl.

◆ endpoint()

template<class TServer , class TSession >
asio::ip::tcp::endpoint& CppServer::Asio::WebSocketServer< TServer, TSession >::endpoint ( )
inlinenoexcept

Get the server endpoint.

Definition at line 68 of file websocket_server.h.

◆ IsStarted()

template<class TServer , class TSession >
bool CppServer::Asio::WebSocketServer< TServer, TSession >::IsStarted ( ) const
inlinenoexcept

Is the server started?

Definition at line 84 of file websocket_server.h.

◆ messages_received()

template<class TServer , class TSession >
uint64_t CppServer::Asio::WebSocketServer< TServer, TSession >::messages_received ( ) const
inlinenoexcept

Get the number messages received by this server.

Definition at line 77 of file websocket_server.h.

◆ messages_sent()

template<class TServer , class TSession >
uint64_t CppServer::Asio::WebSocketServer< TServer, TSession >::messages_sent ( ) const
inlinenoexcept

Get the number messages sent by this server.

Definition at line 75 of file websocket_server.h.

◆ Multicast() [1/3]

template<class TServer , class TSession >
bool CppServer::Asio::WebSocketServer< TServer, TSession >::Multicast ( const void *  buffer,
size_t  size,
websocketpp::frame::opcode::value  opcode = websocketpp::frame::opcode::binary 
)
inline

Multicast data to all connected sessions.

Parameters
buffer- Buffer to send
size- Buffer size
opcode- Data opcode (default is websocketpp::frame::opcode::binary)
Returns
'true' if the data was successfully multicast, 'false' if the server it not started

Definition at line 200 of file websocket_server.inl.

◆ Multicast() [2/3]

template<class TServer , class TSession >
bool CppServer::Asio::WebSocketServer< TServer, TSession >::Multicast ( const std::string &  text,
websocketpp::frame::opcode::value  opcode = websocketpp::frame::opcode::text 
)
inline

Multicast a text string to all connected sessions.

Parameters
text- Text string to send
opcode- Data opcode (default is websocketpp::frame::opcode::text)
Returns
'true' if the text string was successfully multicast, 'false' if the server it not started

Definition at line 223 of file websocket_server.inl.

◆ Multicast() [3/3]

template<class TServer , class TSession >
bool CppServer::Asio::WebSocketServer< TServer, TSession >::Multicast ( const WebSocketMessage message)
inline

Multicast a message to all connected sessions.

Parameters
message- Message to send
Returns
'true' if the message was successfully multicast, 'false' if the server it not started

Definition at line 240 of file websocket_server.inl.

◆ onConnected()

template<class TServer , class TSession >
virtual void CppServer::Asio::WebSocketServer< TServer, TSession >::onConnected ( std::shared_ptr< TSession > &  session)
inlineprotectedvirtual

Handle new session connected notification.

Parameters
session- Connected session

Definition at line 140 of file websocket_server.h.

◆ onDisconnected()

template<class TServer , class TSession >
virtual void CppServer::Asio::WebSocketServer< TServer, TSession >::onDisconnected ( std::shared_ptr< TSession > &  session)
inlineprotectedvirtual

Handle session disconnected notification.

Parameters
session- Disconnected session

Definition at line 145 of file websocket_server.h.

◆ onError()

template<class TServer , class TSession >
virtual void CppServer::Asio::WebSocketServer< TServer, TSession >::onError ( int  error,
const std::string &  category,
const std::string &  message 
)
inlineprotectedvirtual

Handle error notification.

Parameters
error- Error code
category- Error category
message- Error message
Examples:
websocket_chat_server.cpp.

Definition at line 153 of file websocket_server.h.

◆ onStarted()

template<class TServer , class TSession >
virtual void CppServer::Asio::WebSocketServer< TServer, TSession >::onStarted ( )
inlineprotectedvirtual

Handle server started notification.

Definition at line 132 of file websocket_server.h.

◆ onStopped()

template<class TServer , class TSession >
virtual void CppServer::Asio::WebSocketServer< TServer, TSession >::onStopped ( )
inlineprotectedvirtual

Handle server stopped notification.

Definition at line 134 of file websocket_server.h.

◆ operator=() [1/2]

template<class TServer , class TSession >
WebSocketServer& CppServer::Asio::WebSocketServer< TServer, TSession >::operator= ( const WebSocketServer< TServer, TSession > &  )
delete

◆ operator=() [2/2]

template<class TServer , class TSession >
WebSocketServer& CppServer::Asio::WebSocketServer< TServer, TSession >::operator= ( WebSocketServer< TServer, TSession > &&  )
default

◆ Restart()

template<class TServer , class TSession >
bool CppServer::Asio::WebSocketServer< TServer, TSession >::Restart ( )
inline

Restart the server.

Returns
'true' if the server was successfully restarted, 'false' if the server failed to restart

Definition at line 188 of file websocket_server.inl.

◆ service()

template<class TServer , class TSession >
std::shared_ptr<Service>& CppServer::Asio::WebSocketServer< TServer, TSession >::service ( )
inlinenoexcept

Get the Asio service.

Definition at line 66 of file websocket_server.h.

◆ Start()

template<class TServer , class TSession >
bool CppServer::Asio::WebSocketServer< TServer, TSession >::Start ( )
inline

Start the server.

Returns
'true' if the server was successfully started, 'false' if the server failed to start

Definition at line 96 of file websocket_server.inl.

◆ Stop()

template<class TServer , class TSession >
bool CppServer::Asio::WebSocketServer< TServer, TSession >::Stop ( )
inline

Stop the server.

Returns
'true' if the server was successfully stopped, 'false' if the server is already stopped

Definition at line 155 of file websocket_server.inl.

Friends And Related Function Documentation

◆ WebSocketSession

template<class TServer , class TSession >
template<class TSomeServer , class TSomeSession >
friend class WebSocketSession
friend

Definition at line 35 of file websocket_server.h.


The documentation for this class was generated from the following files: