52int main(
int argc,
char* argv[]) {
56 using LegacyClient = web::http::legacy::
in::
Client;
57 using MasterRequest = LegacyClient::MasterRequest;
58 using Request = LegacyClient::Request;
59 using Response = LegacyClient::Response;
60 using LegacySocketAddress = LegacyClient::SocketAddress;
62 const LegacyClient legacyClient
(
64 [](
const std::shared_ptr<MasterRequest>& req) {
67 VLOG(1) << connectionName <<
": OnRequestBegin";
69 req->
set("Sec-WebSocket-Protocol", "subprotocol, echo");
74 [connectionName](
bool success) {
75 VLOG(1) << connectionName <<
": HTTP Upgrade (http -> websocket) start " << (success ?
"success" :
"failed");
77 [connectionName]([[maybe_unused]]
const std::shared_ptr<Request>& req,
78 const std::shared_ptr<Response>& res,
79 [[maybe_unused]]
bool success) {
80 VLOG(1) << connectionName <<
": Upgrade success:";
82 VLOG(1) << connectionName <<
": Requested: " << req->
header("upgrade");
83 VLOG(1) << connectionName <<
": Selected: " << res->
get("upgrade");
85 [connectionName](
const std::shared_ptr<Request>&,
const std::string& message) {
86 VLOG(1) << connectionName <<
": Request parse error: " << message;
89 []([[maybe_unused]]
const std::shared_ptr<MasterRequest>& req) {
92 VLOG(1) << connectionName <<
": OnRequestEnd";
97 VLOG(0) <<
"------------------- Legacy Client Init: " << connectEventReceiver;
100 const core::socket::
State& state) {
103 VLOG(1) << instanceName <<
" connected to '" << socketAddress
.toString() <<
"'";
106 VLOG(1) << instanceName <<
" disabled";
117 using TlsClient = web::http::tls::
in::
Client;
118 using MasterRequest = TlsClient::MasterRequest;
119 using Request = TlsClient::Request;
120 using Response = TlsClient::Response;
121 using TLSSocketAddress = TlsClient::SocketAddress;
123 const TlsClient tlsClient
(
125 [](
const std::shared_ptr<MasterRequest>& req) {
128 VLOG(1) << connectionName <<
": OnRequestBegin";
130 req->
set("Sec-WebSocket-Protocol", "subprotocol, echo");
135 [connectionName](
bool success) {
136 VLOG(1) << connectionName <<
": HTTP Upgrade (http -> websocket) start " << (success ?
"success" :
"failed");
138 [connectionName]([[maybe_unused]]
const std::shared_ptr<Request>& req,
139 [[maybe_unused]]
const std::shared_ptr<Response>& res,
140 [[maybe_unused]]
bool success) {
142 [connectionName](
const std::shared_ptr<Request>&,
const std::string& message) {
143 VLOG(1) << connectionName <<
": Request parse error: " << message;
146 []([[maybe_unused]]
const std::shared_ptr<MasterRequest>& req) {
149 VLOG(1) << connectionName <<
": OnRequestEnd";
154 VLOG(0) <<
"------------------- TLS Client Init: " << connectEventReceiver;
157 const core::socket::
State& state) {
160 VLOG(1) << instanceName <<
" connected to '" << socketAddress
.toString() <<
"'";
163 VLOG(1) << instanceName <<
" disabled";
SocketConnection * getSocketConnection() const
bool upgrade(const std::string &url, const std::string &protocols, const std::function< void(bool)> &onUpgradeInitiate, const std::function< void(const std::shared_ptr< Request > &, const std::shared_ptr< Response > &, bool)> &onResponseReceived, const std::function< void(const std::shared_ptr< Request > &, const std::string &)> &onResponseParseError)