From 08cc02bf1b5cad75ed7b97c0dc7cfc082da537c4 Mon Sep 17 00:00:00 2001 From: Per Larsson Date: Fri, 18 Feb 2022 14:48:41 +0100 Subject: Basic websocket service and test. --- zenserver/testing/httptest.cpp | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) (limited to 'zenserver/testing/httptest.cpp') diff --git a/zenserver/testing/httptest.cpp b/zenserver/testing/httptest.cpp index 230d5d6c5..41a4f064b 100644 --- a/zenserver/testing/httptest.cpp +++ b/zenserver/testing/httptest.cpp @@ -136,6 +136,33 @@ HttpTestingService::HandlePackageRequest(HttpServerRequest& HttpServiceRequest) return (InsertResult.first->second = new PackageHandler(*this, RequestId)).Get(); } +bool +HttpTestingService::HandleMessage(WebSocketId SocketId, const CbPackage& Msg) +{ + using namespace std::literals; + + CbObject Request = Msg.GetObject(); + + CbObjectView Header = Request["Header"sv].AsObjectView(); + std::string_view Method = Header["Method"].AsString(); + const uint64_t CorrelationId = Header["CorrelationId"].AsUInt64(); + + if (Method != "TestHelloZen"sv) + { + return false; + } + + CbObjectWriter Response; + Response.BeginObject("Header"); + Response << "CorrelationId"sv << CorrelationId; + Response.EndObject(); + Response.AddString("Result"sv, "Hello Friend!!"); + + PublishMessage(SocketId, Response.Save()); + + return true; +} + ////////////////////////////////////////////////////////////////////////// HttpTestingService::PackageHandler::PackageHandler(HttpTestingService& Svc, uint32_t RequestId) : m_Svc(Svc), m_RequestId(RequestId) -- cgit v1.2.3 From fd9f9086b3ddd0c38fa87d7e49f6341dacdcc125 Mon Sep 17 00:00:00 2001 From: Per Larsson Date: Mon, 21 Feb 2022 14:22:38 +0100 Subject: Refactored websocket message. --- zenserver/testing/httptest.cpp | 31 +++++++++++++++++++------------ 1 file changed, 19 insertions(+), 12 deletions(-) (limited to 'zenserver/testing/httptest.cpp') diff --git a/zenserver/testing/httptest.cpp b/zenserver/testing/httptest.cpp index 41a4f064b..10b69c469 100644 --- a/zenserver/testing/httptest.cpp +++ b/zenserver/testing/httptest.cpp @@ -8,6 +8,8 @@ namespace zen { +using namespace std::literals; + HttpTestingService::HttpTestingService() { m_Router.RegisterRoute( @@ -136,29 +138,34 @@ HttpTestingService::HandlePackageRequest(HttpServerRequest& HttpServiceRequest) return (InsertResult.first->second = new PackageHandler(*this, RequestId)).Get(); } -bool -HttpTestingService::HandleMessage(WebSocketId SocketId, const CbPackage& Msg) +void +HttpTestingService::RegisterHandlers(WebSocketServer& Server) { - using namespace std::literals; + Server.RegisterRequestHandler("SayHello"sv, *this); +} - CbObject Request = Msg.GetObject(); +bool +HttpTestingService::HandleRequest(const WebSocketMessage& RequestMsg) +{ + CbObjectView Request = RequestMsg.Body().GetObject(); - CbObjectView Header = Request["Header"sv].AsObjectView(); - std::string_view Method = Header["Method"].AsString(); - const uint64_t CorrelationId = Header["CorrelationId"].AsUInt64(); + std::string_view Method = Request["Method"].AsString(); - if (Method != "TestHelloZen"sv) + if (Method != "SayHello"sv) { return false; } CbObjectWriter Response; - Response.BeginObject("Header"); - Response << "CorrelationId"sv << CorrelationId; - Response.EndObject(); Response.AddString("Result"sv, "Hello Friend!!"); - PublishMessage(SocketId, Response.Save()); + WebSocketMessage ResponseMsg; + ResponseMsg.SetMessageType(WebSocketMessageType::kResponse); + ResponseMsg.SetCorrelationId(RequestMsg.CorrelationId()); + ResponseMsg.SetSocketId(RequestMsg.SocketId()); + ResponseMsg.SetBody(Response.Save()); + + SocketServer().SendResponse(std::move(ResponseMsg)); return true; } -- cgit v1.2.3