#pragma once #include #include #include #include #include #include "client/web_socket_client.hpp" namespace nostr { namespace client { /** * @brief An implementation of the `IWebSocketClient` interface that uses the WebSocket++ library. */ class WebsocketppClient : public IWebSocketClient { public: void start() override; void stop() override; void openConnection(std::string uri) override; bool isConnected(std::string uri) override; std::tuple send(std::string message, std::string uri) override; std::tuple send( std::string message, std::string uri, std::function messageHandler) override; void receive(std::string uri, std::function messageHandler) override; void closeConnection(std::string uri) override; private: typedef websocketpp::client websocketpp_client; typedef std::unordered_map::iterator connection_hdl_iterator; websocketpp_client _client; std::unordered_map _connectionHandles; std::mutex _propertyMutex; }; } // namespace client } // namespace nostr