Add ping interval to constructor params for WebSocketServer (#497)
* Update .gitignore for CLion compatibility * Add pingIntervalSeconds to constructor for WebSocketServer * Add Heartbeat section to WebSocketServer usage documentation * Fix typo
This commit is contained in:
		
							
								
								
									
										2
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							@@ -8,3 +8,5 @@ ws/.srl
 | 
			
		||||
ixhttpd
 | 
			
		||||
makefile
 | 
			
		||||
a.out
 | 
			
		||||
.idea/
 | 
			
		||||
cmake-build-debug/
 | 
			
		||||
 
 | 
			
		||||
@@ -445,6 +445,17 @@ server.wait();
 | 
			
		||||
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
### Heartbeat
 | 
			
		||||
 | 
			
		||||
You can configure an optional heartbeat / keep-alive for the WebSocket server. The heartbeat interval can be adjusted or disabled when constructing the `WebSocketServer`. Setting the interval to `-1` disables the heartbeat feature; this is the default setting. The parameter you set will be applied to every `WebSocket` object that the server creates.
 | 
			
		||||
 | 
			
		||||
To enable a 45 second heartbeat on a `WebSocketServer`:
 | 
			
		||||
 | 
			
		||||
```cpp
 | 
			
		||||
int pingIntervalSeconds = 45;
 | 
			
		||||
ix::WebSocketServer server(port, host, backlog, maxConnections, handshakeTimeoutSecs, addressFamily, pingIntervalSeconds);
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
## HTTP client API
 | 
			
		||||
 | 
			
		||||
```cpp
 | 
			
		||||
 
 | 
			
		||||
@@ -19,17 +19,20 @@ namespace ix
 | 
			
		||||
{
 | 
			
		||||
    const int WebSocketServer::kDefaultHandShakeTimeoutSecs(3); // 3 seconds
 | 
			
		||||
    const bool WebSocketServer::kDefaultEnablePong(true);
 | 
			
		||||
    const int WebSocketServer::kPingIntervalSeconds(-1); // disable heartbeat
 | 
			
		||||
 | 
			
		||||
    WebSocketServer::WebSocketServer(int port,
 | 
			
		||||
                                     const std::string& host,
 | 
			
		||||
                                     int backlog,
 | 
			
		||||
                                     size_t maxConnections,
 | 
			
		||||
                                     int handshakeTimeoutSecs,
 | 
			
		||||
                                     int addressFamily)
 | 
			
		||||
                                     int addressFamily,
 | 
			
		||||
                                     int pingIntervalSeconds)
 | 
			
		||||
        : SocketServer(port, host, backlog, maxConnections, addressFamily)
 | 
			
		||||
        , _handshakeTimeoutSecs(handshakeTimeoutSecs)
 | 
			
		||||
        , _enablePong(kDefaultEnablePong)
 | 
			
		||||
        , _enablePerMessageDeflate(true)
 | 
			
		||||
        , _pingIntervalSeconds(pingIntervalSeconds)
 | 
			
		||||
    {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@@ -93,6 +96,7 @@ namespace ix
 | 
			
		||||
        auto webSocket = std::make_shared<WebSocket>();
 | 
			
		||||
 | 
			
		||||
        webSocket->setAutoThreadName(false);
 | 
			
		||||
        webSocket->setPingInterval(_pingIntervalSeconds);
 | 
			
		||||
 | 
			
		||||
        if (_onConnectionCallback)
 | 
			
		||||
        {
 | 
			
		||||
 
 | 
			
		||||
@@ -33,7 +33,8 @@ namespace ix
 | 
			
		||||
                        int backlog = SocketServer::kDefaultTcpBacklog,
 | 
			
		||||
                        size_t maxConnections = SocketServer::kDefaultMaxConnections,
 | 
			
		||||
                        int handshakeTimeoutSecs = WebSocketServer::kDefaultHandShakeTimeoutSecs,
 | 
			
		||||
                        int addressFamily = SocketServer::kDefaultAddressFamily);
 | 
			
		||||
                        int addressFamily = SocketServer::kDefaultAddressFamily,
 | 
			
		||||
                        int pingIntervalSeconds = WebSocketServer::kPingIntervalSeconds);
 | 
			
		||||
        virtual ~WebSocketServer();
 | 
			
		||||
        virtual void stop() final;
 | 
			
		||||
 | 
			
		||||
@@ -61,6 +62,7 @@ namespace ix
 | 
			
		||||
        int _handshakeTimeoutSecs;
 | 
			
		||||
        bool _enablePong;
 | 
			
		||||
        bool _enablePerMessageDeflate;
 | 
			
		||||
        int _pingIntervalSeconds;
 | 
			
		||||
 | 
			
		||||
        OnConnectionCallback _onConnectionCallback;
 | 
			
		||||
        OnClientMessageCallback _onClientMessageCallback;
 | 
			
		||||
@@ -69,6 +71,7 @@ namespace ix
 | 
			
		||||
        std::set<std::shared_ptr<WebSocket>> _clients;
 | 
			
		||||
 | 
			
		||||
        const static bool kDefaultEnablePong;
 | 
			
		||||
        const static int kPingIntervalSeconds;
 | 
			
		||||
 | 
			
		||||
        // Methods
 | 
			
		||||
        virtual void handleConnection(std::unique_ptr<Socket> socket,
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user