diff options
| author | Per Larsson <[email protected]> | 2022-02-18 14:48:41 +0100 |
|---|---|---|
| committer | Per Larsson <[email protected]> | 2022-02-18 14:48:41 +0100 |
| commit | 08cc02bf1b5cad75ed7b97c0dc7cfc082da537c4 (patch) | |
| tree | 8fd8e7189c9807280003eabb3040cb35db2e5cd4 /zenserver/testing | |
| parent | Web socket client is shared between I/O thead and client. (diff) | |
| download | zen-08cc02bf1b5cad75ed7b97c0dc7cfc082da537c4.tar.xz zen-08cc02bf1b5cad75ed7b97c0dc7cfc082da537c4.zip | |
Basic websocket service and test.
Diffstat (limited to 'zenserver/testing')
| -rw-r--r-- | zenserver/testing/httptest.cpp | 27 | ||||
| -rw-r--r-- | zenserver/testing/httptest.h | 4 |
2 files changed, 30 insertions, 1 deletions
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) diff --git a/zenserver/testing/httptest.h b/zenserver/testing/httptest.h index f7ea0c31c..267d59b36 100644 --- a/zenserver/testing/httptest.h +++ b/zenserver/testing/httptest.h @@ -5,6 +5,7 @@ #include <zencore/logging.h> #include <zencore/stats.h> #include <zenhttp/httpserver.h> +#include <zenhttp/websocket.h> #include <atomic> @@ -13,7 +14,7 @@ namespace zen { /** * Test service to facilitate testing the HTTP framework and client interactions */ -class HttpTestingService : public HttpService +class HttpTestingService : public HttpService, public WebSocketService { public: HttpTestingService(); @@ -22,6 +23,7 @@ public: virtual const char* BaseUri() const override; virtual void HandleRequest(HttpServerRequest& Request) override; virtual Ref<IHttpPackageHandler> HandlePackageRequest(HttpServerRequest& HttpServiceRequest) override; + virtual bool HandleMessage(WebSocketId SocketId, const CbPackage& Msg) override; class PackageHandler : public IHttpPackageHandler { |