diff --git a/src/internal/sio_client_impl.cpp b/src/internal/sio_client_impl.cpp index 9ce9b832..68d2c690 100644 --- a/src/internal/sio_client_impl.cpp +++ b/src/internal/sio_client_impl.cpp @@ -63,7 +63,7 @@ namespace sio sync_close(); } - void client_impl::connect(const string& uri, const map& query) + void client_impl::connect(const string& uri, const map& query, const map& headers) { if(m_reconn_timer) { @@ -99,6 +99,8 @@ namespace sio } m_query_string=move(query_str); + m_http_headers = headers; + this->reset_states(); m_client.get_io_service().dispatch(lib::bind(&client_impl::connect_impl,this,uri,m_query_string)); m_network_thread.reset(new thread(lib::bind(&client_impl::run_loop,this)));//uri lifecycle? @@ -220,6 +222,10 @@ namespace sio break; } + for( auto&& header: m_http_headers ) { + con->replace_header(header.first, header.second); + } + m_client.connect(con); return; } diff --git a/src/internal/sio_client_impl.h b/src/internal/sio_client_impl.h index fb5910cf..87ac1d03 100644 --- a/src/internal/sio_client_impl.h +++ b/src/internal/sio_client_impl.h @@ -97,7 +97,8 @@ namespace sio } // Client Functions - such as send, etc. - void connect(const std::string& uri, const std::map& queryString); + void connect(const std::string& uri, const std::map& queryString, + const std::map& httpExtraHeaders); sio::socket::ptr const& socket(const std::string& nsp); @@ -182,6 +183,7 @@ namespace sio std::string m_sid; std::string m_base_url; std::string m_query_string; + std::map m_http_headers; unsigned int m_ping_interval; unsigned int m_ping_timeout; diff --git a/src/sio_client.cpp b/src/sio_client.cpp old mode 100755 new mode 100644 index 1c7636a7..48d0ce20 --- a/src/sio_client.cpp +++ b/src/sio_client.cpp @@ -70,13 +70,18 @@ namespace sio void client::connect(const std::string& uri) { - const std::map query; - m_impl->connect(uri, query); + m_impl->connect(uri, {}, {}); } void client::connect(const std::string& uri, const std::map& query) { - m_impl->connect(uri, query); + m_impl->connect(uri, query, {}); + } + + void client::connect(const std::string& uri, const std::map& query, + const std::map& http_extra_headers) + { + m_impl->connect(uri, query, http_extra_headers); } socket::ptr const& client::socket(const std::string& nsp) diff --git a/src/sio_client.h b/src/sio_client.h old mode 100755 new mode 100644 index 1cf33ff7..adb84e77 --- a/src/sio_client.h +++ b/src/sio_client.h @@ -58,6 +58,9 @@ namespace sio void connect(const std::string& uri, const std::map& query); + void connect(const std::string& uri, const std::map& query, + const std::map& http_extra_headers); + void set_reconnect_attempts(int attempts); void set_reconnect_delay(unsigned millis);