70 if (request
->get("Sec-WebSocket-Version") ==
"13") {
71 std::string requestedSubProtocolNames = request
->get("sec-websocket-protocol");
73 std::list<std::string> subProtocolNamesList;
75 std::string subProtocolName;
78 subProtocolNamesList.push_back(subProtocolName);
79 }
while (!requestedSubProtocolNames.empty());
81 if (!subProtocolNamesList.empty()) {
82 std::string selectedSubProtocolName;
87 if (!selectedSubProtocolName.empty()) {
88 response
->set("Upgrade", "websocket");
89 response
->set("Connection", "Upgrade");
90 response
->set("Sec-WebSocket-Protocol", selectedSubProtocolName
);
96 socketContext =
nullptr;
98 response
->set("Connection", "close");
104 response
->set("Connection", "close");
110 response
->set("Sec-WebSocket-Version", "13");
111 response
->set("Connection", "close");
115 return socketContext;
static void link(const std::string &upgradeContextName, SocketContextUpgradeFactory *(*linkedPlugin)())
http::SocketContextUpgrade< web::http::server::Request, web::http::server::Response > * create(core::socket::stream::SocketConnection *socketConnection, web::http::server::Request *request, web::http::server::Response *response) override
SocketContextUpgradeFactory()=default
SocketContextUpgrade(core::socket::stream::SocketConnection *socketConnection, web::http::SocketContextUpgradeFactory< web::http::server::Request, web::http::server::Response > *socketContextUpgradeFactory)
std::string loadSubProtocol(const std::list< std::string > &subProtocolNames)