UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
WinHttpConnectionWebSocket.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#if WITH_WEBSOCKETS && WITH_WINHTTPWEBSOCKETS
6
7#include "CoreMinimal.h"
10#include "Containers/Queue.h"
11
14DECLARE_DELEGATE_ThreeParams(FWinHttpConnectionWebSocketOnClosed, uint16 /*Code*/, const FString& /*Reason*/, bool /*bGracefulDisconnect*/);
15
18{
19public:
21 FWinHttpSession& Session,
22 const FString& RequestUrl,
25
26 virtual ~FWinHttpConnectionWebSocket() = default;
31
32 //~ Begin FWinHttpConnectionHttp Public Interface
33 virtual bool IsValid() const override;
34 virtual void PumpMessages() override;
35 virtual void PumpStates() override;
36 //~ End FWinHttpConnectionHttp Public Interface
37
39
43
45
51 bool IsConnected() const;
52
54
61 bool SendMessage(EWebSocketMessageType MessageType, TArray<uint8>&& Message);
62
69 bool CloseConnection(const uint16 Code, const FString& Reason);
70
71protected:
73 FWinHttpSession& Session,
74 const FString& RequestUrl,
75 const bool bIsSecure,
76 const FString& Domain,
77 const TOptional<uint16> Port,
78 const FString& PathAndQuery,
81
82 bool IsReadInProgress() const;
83 void ReadData(const int32 MaxMessagesToRead);
84 bool IsWriteInProgress() const;
85 void WriteData(const int32 MaxMessagesToWrite);
86
87 //~ Begin FWinHttpConnectionHttp Protected Interface
88 virtual bool FinishRequest(const EHttpRequestStatus::Type FinalState) override;
89 virtual void HandleHeadersAvailable() override;
90 virtual void HandleHandleClosing() override;
91 //~ End FWinHttpConnectionHttp Protected Interface
92
94 void HandleWebSocketReadComplete(const uint32 BytesRead, const EWebSocketMessageType MessageType, const bool bIsFragment);
95 void HandleWebSocketWriteComplete(const uint32 BytesWritten, const EWebSocketMessageType MessageType);
98
99private:
100 // Hide HTTP-events from this class's interface
101 using FWinHttpConnectionHttp::CreateHttpConnection;
102 using FWinHttpConnectionHttp::SetDataTransferredHandler;
103 using FWinHttpConnectionHttp::SetHeaderReceivedHandler;
104 using FWinHttpConnectionHttp::SetRequestCompletedHandler;
105
115
117 friend void CALLBACK UE_WinHttpWebSocketStatusCallback(HINTERNET, DWORD_PTR, DWORD, LPVOID, DWORD);
118
119protected:
121
125 bool bWebSocketReadInProgress = false;
126
129 bool bWebSocketWriteInProgress = false;
130
132 bool bHasPendingConnectedEvent = false;
133
136
140};
141
142#endif //WITH_WEBSOCKETS && WITH_WINHTTPWEBSOCKETS
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define DECLARE_DELEGATE(DelegateName)
Definition DelegateCombinations.h:20
#define DECLARE_DELEGATE_TwoParams(DelegateName, Param1Type, Param2Type)
Definition DelegateCombinations.h:57
#define DECLARE_DELEGATE_ThreeParams(DelegateName, Param1Type, Param2Type, Param3Type)
Definition DelegateCombinations.h:66
uint16_t uint16
Definition binka_ue_file_header.h:7
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition Array.h:670
Definition UnrealString.h.inl:34
Definition Queue.h:48
Definition SharedPointer.h:692
Definition UniquePtr.h:107
Type
Definition IHttpBase.h:13
Definition Optional.h:131