diff --git a/http/routing.hpp b/http/routing.hpp
index abb1d43..0a0dc74 100644
--- a/http/routing.hpp
+++ b/http/routing.hpp
@@ -386,7 +386,9 @@
     }
 
   protected:
-    std::function<void(crow::websocket::Connection&)> openHandler;
+    std::function<void(crow::websocket::Connection&,
+                       std::shared_ptr<bmcweb::AsyncResp>)>
+        openHandler;
     std::function<void(crow::websocket::Connection&, const std::string&, bool)>
         messageHandler;
     std::function<void(crow::websocket::Connection&, const std::string&)>
diff --git a/http/websocket.hpp b/http/websocket.hpp
index 06f35d1..324ffd5 100644
--- a/http/websocket.hpp
+++ b/http/websocket.hpp
@@ -65,7 +65,8 @@
   public:
     ConnectionImpl(
         const crow::Request& reqIn, Adaptor adaptorIn,
-        std::function<void(Connection&)> openHandler,
+        std::function<void(Connection&, std::shared_ptr<bmcweb::AsyncResp>)>
+            openHandler,
         std::function<void(Connection&, const std::string&, bool)>
             messageHandler,
         std::function<void(Connection&, const std::string&)> closeHandler,
@@ -192,11 +193,14 @@
     {
         BMCWEB_LOG_DEBUG << "Websocket accepted connection";
 
+        auto asyncResp = std::make_shared<bmcweb::AsyncResp>();
+
+        asyncResp->res.result(boost::beast::http::status::ok);
         doRead();
 
         if (openHandler)
         {
-            openHandler(*this);
+            openHandler(*this, asyncResp);
         }
     }
 
@@ -276,7 +280,8 @@
     std::vector<std::string> outBuffer;
     bool doingWrite = false;
 
-    std::function<void(Connection&)> openHandler;
+    std::function<void(Connection&, std::shared_ptr<bmcweb::AsyncResp>)>
+        openHandler;
     std::function<void(Connection&, const std::string&, bool)> messageHandler;
     std::function<void(Connection&, const std::string&)> closeHandler;
     std::function<void(Connection&)> errorHandler;
diff --git a/include/dbus_monitor.hpp b/include/dbus_monitor.hpp
index 6004194..a6c86c6 100644
--- a/include/dbus_monitor.hpp
+++ b/include/dbus_monitor.hpp
@@ -107,7 +107,8 @@
     BMCWEB_ROUTE(app, "/subscribe")
         .privileges({{"Login"}})
         .websocket()
-        .onopen([&](crow::websocket::Connection& conn) {
+        .onopen([&](crow::websocket::Connection& conn,
+                    const std::shared_ptr<bmcweb::AsyncResp>&) {
             BMCWEB_LOG_DEBUG << "Connection " << &conn << " opened";
             sessions[&conn] = DbusWebsocketSession();
         })
diff --git a/include/kvm_websocket.hpp b/include/kvm_websocket.hpp
index 46443b9..a9dc8ea 100644
--- a/include/kvm_websocket.hpp
+++ b/include/kvm_websocket.hpp
@@ -161,7 +161,8 @@
     BMCWEB_ROUTE(app, "/kvm/0")
         .privileges({{"ConfigureComponents", "ConfigureManager"}})
         .websocket()
-        .onopen([](crow::websocket::Connection& conn) {
+        .onopen([](crow::websocket::Connection& conn,
+                   const std::shared_ptr<bmcweb::AsyncResp>&) {
             BMCWEB_LOG_DEBUG << "Connection " << &conn << " opened";
 
             if (sessions.size() == maxSessions)
diff --git a/include/nbd_proxy.hpp b/include/nbd_proxy.hpp
index 85fb2d4..7b90e90 100644
--- a/include/nbd_proxy.hpp
+++ b/include/nbd_proxy.hpp
@@ -252,15 +252,17 @@
 {
     BMCWEB_ROUTE(app, "/nbd/<str>")
         .websocket()
-        .onopen([](crow::websocket::Connection& conn) {
+        .onopen([](crow::websocket::Connection& conn,
+                   const std::shared_ptr<bmcweb::AsyncResp>& asyncResp) {
             BMCWEB_LOG_DEBUG << "nbd-proxy.onopen(" << &conn << ")";
 
             auto getUserInfoHandler =
-                [&conn](const boost::system::error_code ec,
-                        boost::container::flat_map<
-                            std::string, std::variant<bool, std::string,
-                                                      std::vector<std::string>>>
-                            userInfo) {
+                [&conn, asyncResp](
+                    const boost::system::error_code ec,
+                    boost::container::flat_map<
+                        std::string, std::variant<bool, std::string,
+                                                  std::vector<std::string>>>
+                        userInfo) {
                     if (ec)
                     {
                         BMCWEB_LOG_ERROR << "GetUserInfo failed...";
@@ -300,7 +302,7 @@
                         return;
                     }
 
-                    auto openHandler = [&conn](
+                    auto openHandler = [&conn, asyncResp](
                                            const boost::system::error_code ec,
                                            const dbus::utility::
                                                ManagedObjectType& objects) {
diff --git a/include/obmc_console.hpp b/include/obmc_console.hpp
index dab9521..478649a 100644
--- a/include/obmc_console.hpp
+++ b/include/obmc_console.hpp
@@ -119,7 +119,8 @@
     BMCWEB_ROUTE(app, "/console0")
         .privileges({{"ConfigureComponents", "ConfigureManager"}})
         .websocket()
-        .onopen([](crow::websocket::Connection& conn) {
+        .onopen([](crow::websocket::Connection& conn,
+                   const std::shared_ptr<bmcweb::AsyncResp>&) {
             BMCWEB_LOG_DEBUG << "Connection " << &conn << " opened";
 
             sessions.insert(&conn);
diff --git a/include/vm_websocket.hpp b/include/vm_websocket.hpp
index 08de90e..34ef82e 100644
--- a/include/vm_websocket.hpp
+++ b/include/vm_websocket.hpp
@@ -160,7 +160,8 @@
     BMCWEB_ROUTE(app, "/vm/0/0")
         .privileges({{"ConfigureComponents", "ConfigureManager"}})
         .websocket()
-        .onopen([](crow::websocket::Connection& conn) {
+        .onopen([](crow::websocket::Connection& conn,
+                   const std::shared_ptr<bmcweb::AsyncResp>&) {
             BMCWEB_LOG_DEBUG << "Connection " << &conn << " opened";
 
             if (session != nullptr)
