dhbaird / easywsclient

A short and sweet WebSocket client for C++
MIT License
751 stars 204 forks source link

Close sockets with _RealWebSocket destructor #96

Open james-richey-gv opened 3 years ago

james-richey-gv commented 3 years ago

A new helper method, terminateConnection(), is added to ensure all the places where sockets are closed cause the socket file descriptor to become invalidated and the client to be put in the correct state.

A destructor is added to call terminateConnection() ensuring resources are freed if the WebSocket object is destroyed.

Finally, private copy constructor and copy assignment operator are added per the "Rule of Three" ensuring only one instance manages the socket.

This should address issue #71: Websocket::close() doesn't disconnect correctly. Calling WebSocket::close() still requests a clean disconnect; however, the socket is guaranteed to be closed when the WebSocket destructor is run.