Does cpp-httplib have plan to support websocket?
fqcloud opened this issue · 2 comments
fqcloud commented
Does cpp-httplib have plan to support websocket?
fqcloud commented
I try it myself, but it seems not work well enough.
inline bool process_and_close_socket(socket_t sock) override
{
bool bReq4WsUpgrade = false;
auto ret = httplib::detail::process_server_socket(
svr_sock_, sock, keep_alive_max_count_, 0/*keep_alive_timeout_sec_*/,
read_timeout_sec_, read_timeout_usec_, write_timeout_sec_,
write_timeout_usec_,
[this, &bReq4WsUpgrade](httplib::Stream& strm, bool close_connection, bool& connection_closed) {
set_post_routing_handler([this, &bReq4WsUpgrade](const httplib::Request& req, httplib::Response& res)
{
std::string strAccept;
bReq4WsUpgrade = IsUpgradeRequest(req, strAccept);
if (bReq4WsUpgrade)
{
res.set_header("Connection", "Upgrade");
res.set_header("Upgrade", "websocket");
res.set_header("Sec-WebSocket-Accept", strAccept);
res.set_header("Server", "HttpWebSocketServer");
res.status = httplib::StatusCode::SwitchingProtocol_101;
res.body.clear();
res.content_provider_ = nullptr;
}
});
return process_request(strm, close_connection, connection_closed, nullptr);
});
if (!bReq4WsUpgrade)
{
httplib::detail::shutdown_socket(sock);
httplib::detail::close_socket(sock);
}
else
{
wspool_.add(sock, wsCbFactory_());
}
return ret;
}
yhirose commented
I don't have a plan to support websocket.