Skip to content

Commit cda7b20

Browse files
author
Alexey Tatarsky
committed
client: support custom HTTP headers
Added another overload of client::connect that takes an std::map of additional HTTP headers to be passed on to the server when connecting.
1 parent a0e5341 commit cda7b20

File tree

4 files changed

+21
-5
lines changed

4 files changed

+21
-5
lines changed

Diff for: src/internal/sio_client_impl.cpp

+7-1
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ namespace sio
6363
sync_close();
6464
}
6565

66-
void client_impl::connect(const string& uri, const map<string,string>& query)
66+
void client_impl::connect(const string& uri, const map<string,string>& query, const map<string, string>& headers)
6767
{
6868
if(m_reconn_timer)
6969
{
@@ -99,6 +99,8 @@ namespace sio
9999
}
100100
m_query_string=move(query_str);
101101

102+
m_http_headers = headers;
103+
102104
this->reset_states();
103105
m_client.get_io_service().dispatch(lib::bind(&client_impl::connect_impl,this,uri,m_query_string));
104106
m_network_thread.reset(new thread(lib::bind(&client_impl::run_loop,this)));//uri lifecycle?
@@ -220,6 +222,10 @@ namespace sio
220222
break;
221223
}
222224

225+
for( auto&& header: m_http_headers ) {
226+
con->replace_header(header.first, header.second);
227+
}
228+
223229
m_client.connect(con);
224230
return;
225231
}

Diff for: src/internal/sio_client_impl.h

+3-1
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,8 @@ namespace sio
9797
}
9898

9999
// Client Functions - such as send, etc.
100-
void connect(const std::string& uri, const std::map<std::string, std::string>& queryString);
100+
void connect(const std::string& uri, const std::map<std::string, std::string>& queryString,
101+
const std::map<std::string, std::string>& httpExtraHeaders);
101102

102103
sio::socket::ptr const& socket(const std::string& nsp);
103104

@@ -182,6 +183,7 @@ namespace sio
182183
std::string m_sid;
183184
std::string m_base_url;
184185
std::string m_query_string;
186+
std::map<std::string, std::string> m_http_headers;
185187

186188
unsigned int m_ping_interval;
187189
unsigned int m_ping_timeout;

Diff for: src/sio_client.cpp

100755100644
+8-3
Original file line numberDiff line numberDiff line change
@@ -70,13 +70,18 @@ namespace sio
7070

7171
void client::connect(const std::string& uri)
7272
{
73-
const std::map<string,string> query;
74-
m_impl->connect(uri, query);
73+
m_impl->connect(uri, {}, {});
7574
}
7675

7776
void client::connect(const std::string& uri, const std::map<string,string>& query)
7877
{
79-
m_impl->connect(uri, query);
78+
m_impl->connect(uri, query, {});
79+
}
80+
81+
void client::connect(const std::string& uri, const std::map<std::string,std::string>& query,
82+
const std::map<std::string,std::string>& http_extra_headers)
83+
{
84+
m_impl->connect(uri, query, http_extra_headers);
8085
}
8186

8287
socket::ptr const& client::socket(const std::string& nsp)

Diff for: src/sio_client.h

100755100644
+3
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,9 @@ namespace sio
5858

5959
void connect(const std::string& uri, const std::map<std::string,std::string>& query);
6060

61+
void connect(const std::string& uri, const std::map<std::string,std::string>& query,
62+
const std::map<std::string,std::string>& http_extra_headers);
63+
6164
void set_reconnect_attempts(int attempts);
6265

6366
void set_reconnect_delay(unsigned millis);

0 commit comments

Comments
 (0)