Skip to content

Commit 23f243f

Browse files
feat: send auth object upon connecting (#335)
Usage: ```c++ sio::client client; sio::message::ptr auth = sio::object_message::create(); auth->get_map()["token"] = sio::string_message::create("eyJhbGciOiJIUzI1NiIsInR..."); auth->get_map()["sessionId"] = sio::string_message::create("p0ZoB1FwH6"); client.connect(server_url, auth); ```
1 parent 2b1dda7 commit 23f243f

File tree

6 files changed

+40
-13
lines changed

6 files changed

+40
-13
lines changed

src/internal/sio_client_impl.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ namespace sio
7070
sync_close();
7171
}
7272

73-
void client_impl::connect(const string& uri, const map<string,string>& query, const map<string, string>& headers)
73+
void client_impl::connect(const string& uri, const map<string,string>& query, const map<string, string>& headers, const message::ptr& auth)
7474
{
7575
if(m_reconn_timer)
7676
{
@@ -108,6 +108,7 @@ namespace sio
108108
m_query_string=move(query_str);
109109

110110
m_http_headers = headers;
111+
m_auth = auth;
111112

112113
this->reset_states();
113114
m_client.get_io_service().dispatch(std::bind(&client_impl::connect_impl,this,uri,m_query_string));
@@ -140,7 +141,7 @@ namespace sio
140141
}
141142
else
142143
{
143-
pair<const string, socket::ptr> p(aux,shared_ptr<sio::socket>(new sio::socket(this,aux)));
144+
pair<const string, socket::ptr> p(aux,shared_ptr<sio::socket>(new sio::socket(this,aux,m_auth)));
144145
return (m_sockets.insert(p).first)->second;
145146
}
146147
}

src/internal/sio_client_impl.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ namespace sio
104104

105105
// Client Functions - such as send, etc.
106106
void connect(const std::string& uri, const std::map<std::string, std::string>& queryString,
107-
const std::map<std::string, std::string>& httpExtraHeaders);
107+
const std::map<std::string, std::string>& httpExtraHeaders, const message::ptr& auth);
108108

109109
sio::socket::ptr const& socket(const std::string& nsp);
110110

@@ -199,6 +199,7 @@ namespace sio
199199
std::string m_base_url;
200200
std::string m_query_string;
201201
std::map<std::string, std::string> m_http_headers;
202+
message::ptr m_auth;
202203

203204
unsigned int m_ping_interval;
204205
unsigned int m_ping_timeout;

src/sio_client.cpp

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -69,18 +69,34 @@ namespace sio
6969

7070
void client::connect(const std::string& uri)
7171
{
72-
m_impl->connect(uri, {}, {});
72+
m_impl->connect(uri, {}, {}, {});
73+
}
74+
75+
void client::connect(const std::string& uri, const message::ptr& auth)
76+
{
77+
m_impl->connect(uri, {}, {}, auth);
7378
}
7479

7580
void client::connect(const std::string& uri, const std::map<string,string>& query)
7681
{
77-
m_impl->connect(uri, query, {});
82+
m_impl->connect(uri, query, {}, {});
83+
}
84+
85+
void client::connect(const std::string& uri, const std::map<string,string>& query, const message::ptr& auth)
86+
{
87+
m_impl->connect(uri, query, {}, auth);
7888
}
7989

8090
void client::connect(const std::string& uri, const std::map<std::string,std::string>& query,
8191
const std::map<std::string,std::string>& http_extra_headers)
8292
{
83-
m_impl->connect(uri, query, http_extra_headers);
93+
m_impl->connect(uri, query, http_extra_headers, {});
94+
}
95+
96+
void client::connect(const std::string& uri, const std::map<std::string,std::string>& query,
97+
const std::map<std::string,std::string>& http_extra_headers, const message::ptr& auth)
98+
{
99+
m_impl->connect(uri, query, http_extra_headers, auth);
84100
}
85101

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

src/sio_client.h

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,11 +56,18 @@ namespace sio
5656
// Client Functions - such as send, etc.
5757
void connect(const std::string& uri);
5858

59+
void connect(const std::string& uri, const message::ptr& auth);
60+
5961
void connect(const std::string& uri, const std::map<std::string,std::string>& query);
6062

63+
void connect(const std::string& uri, const std::map<std::string,std::string>& query, const message::ptr& auth);
64+
6165
void connect(const std::string& uri, const std::map<std::string,std::string>& query,
6266
const std::map<std::string,std::string>& http_extra_headers);
6367

68+
void connect(const std::string& uri, const std::map<std::string,std::string>& query,
69+
const std::map<std::string,std::string>& http_extra_headers, const message::ptr& auth);
70+
6471
void set_reconnect_attempts(int attempts);
6572

6673
void set_reconnect_delay(unsigned millis);

src/sio_socket.cpp

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@ namespace sio
108108
{
109109
public:
110110

111-
impl(client_impl *,std::string const&);
111+
impl(client_impl *, std::string const&, message::ptr const&);
112112
~impl();
113113

114114
void on(std::string const& event_name,event_listener_aux const& func);
@@ -173,6 +173,7 @@ namespace sio
173173

174174
bool m_connected;
175175
std::string m_nsp;
176+
message::ptr m_auth;
176177

177178
std::map<unsigned int, std::function<void (message::list const&)> > m_acks;
178179

@@ -228,10 +229,11 @@ namespace sio
228229
m_error_listener = nullptr;
229230
}
230231

231-
socket::impl::impl(client_impl *client,std::string const& nsp):
232+
socket::impl::impl(client_impl *client, std::string const& nsp, message::ptr const& auth):
232233
m_client(client),
233234
m_connected(false),
234-
m_nsp(nsp)
235+
m_nsp(nsp),
236+
m_auth(auth)
235237
{
236238
NULL_GUARD(client);
237239
if(m_client->opened())
@@ -269,7 +271,7 @@ namespace sio
269271
void socket::impl::send_connect()
270272
{
271273
NULL_GUARD(m_client);
272-
packet p(packet::type_connect,m_nsp);
274+
packet p(packet::type_connect, m_nsp, m_auth);
273275
m_client->send(p);
274276
m_connection_timer.reset(new asio::steady_timer(m_client->get_io_service()));
275277
asio::error_code ec;
@@ -523,8 +525,8 @@ namespace sio
523525
return socket::event_listener();
524526
}
525527

526-
socket::socket(client_impl* client,std::string const& nsp):
527-
m_impl(new impl(client,nsp))
528+
socket::socket(client_impl* client,std::string const& nsp,message::ptr const& auth):
529+
m_impl(new impl(client,nsp,auth))
528530
{
529531
}
530532

src/sio_socket.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ namespace sio
7575
std::string const& get_namespace() const;
7676

7777
protected:
78-
socket(client_impl*,std::string const&);
78+
socket(client_impl*,std::string const&,message::ptr const&);
7979

8080
void on_connected();
8181

0 commit comments

Comments
 (0)