28#include "CoreMinimal.h"
51 FHubConnection(
const FString& InUrl,
const TMap<FString, FString>& InHeaders);
59#pragma region IHubConnection overrides
65 virtual void Start()
override;
71 virtual void Stop()
override;
78 FORCEINLINE
virtual FOnHubConnectedEvent&
OnConnected()
override
80 return OnHubConnectedEvent;
90 return OnHubConnectionErrorEvent;
98 FORCEINLINE
virtual FHubConnectionClosedEvent&
OnClosed()
override
100 return OnHubConnectionClosedEvent;
109 virtual FOnMethodInvocation&
On(
const FString& EventName)
override;
118 virtual FOnMethodCompletion&
Invoke(
const FString& EventName,
const TArray<FSignalRValue>& InArguments = TArray<FSignalRValue>())
override;
126 virtual void Send(
const FString& InEventName,
const TArray<FSignalRValue>& InArguments = TArray<FSignalRValue>())
override;
127#pragma endregion IHubConnection overrides
129#pragma region FTickableGameObject overrides
136 virtual void Tick(
float DeltaTime)
override;
152 return ETickableTickType::Always;
184#pragma endregion FTickableGameObject overrides
190 enum class EConnectionState
197 EConnectionState ConnectionState;
199 void OnConnectionStarted();
200 void OnConnectionFailed();
202 void OnConnectionClosed(int32 StatusCode,
const FString& Reason,
bool bWasClean);
204 void TryReconnectIfNeeded();
207 void InvokeHubMethod(
const FString& MethodName,
const TArray<FSignalRValue>& InArguments, FName CallbackId);
211 TSharedPtr<IHubProtocol> HubProtocol;
212 TSharedPtr<FConnection> Connection;
213 TMap<FString, FOnMethodInvocation> InvocationHandlers;
214 FCriticalSection InvocationHandlersGuard;
215 FCallbackManager CallbackManager;
217 bool bHandshakeReceived =
false;
219 float TickTimeCounter = 0;
221 TArray<FString> WaitingCalls;
223 FOnHubConnectedEvent OnHubConnectedEvent;
224 FOnHubConnectionErrorEvent OnHubConnectionErrorEvent;
225 FHubConnectionClosedEvent OnHubConnectionClosedEvent;
227 void SendCloseMessage();
229 bool bReceivedCloseMessage =
false;
230 bool bShouldReconnect =
false;
@ Connecting
Definition VoxtaMicrophoneState.h:16
Represents a connection to a SignalR server.
Definition Connection.h:37
virtual bool IsTickableWhenPaused() const override
Determines if this object is tickable when the game is paused.
Definition HubConnection.h:180
virtual void Start() override
Starts the hub connection.
Definition HubConnection.cpp:68
virtual FORCEINLINE FHubConnectionClosedEvent & OnClosed() override
Gets the event that is triggered when the hub connection is closed.
Definition HubConnection.h:98
virtual ETickableTickType GetTickableTickType() const override
Gets the tickable tick type for this object.
Definition HubConnection.h:150
virtual ~FHubConnection()
Destructor for the hub connection.
Definition HubConnection.cpp:50
void ProcessMessage(const FString &InMessageStr)
Definition HubConnection.cpp:144
virtual void Send(const FString &InEventName, const TArray< FSignalRValue > &InArguments=TArray< FSignalRValue >()) override
Sends a hub method invocation with the specified arguments without waiting for a result.
Definition HubConnection.cpp:124
virtual bool IsTickableInEditor() const override
Determines if this object is tickable in the editor.
Definition HubConnection.h:170
FHubConnection(const FString &InUrl, const TMap< FString, FString > &InHeaders)
Creates a new connection to a SignalR hub.
Definition HubConnection.cpp:35
virtual void Tick(float DeltaTime) override
Ticks the hub connection, used for periodic tasks such as sending pings.
Definition HubConnection.cpp:129
virtual FORCEINLINE FOnHubConnectionErrorEvent & OnConnectionError() override
Gets the event that is triggered when a hub connection error occurs.
Definition HubConnection.h:88
virtual FOnMethodInvocation & On(const FString &EventName) override
Registers a handler for a hub method invocation.
Definition HubConnection.cpp:94
TStatId GetStatId() const override
Gets the stat ID for this tickable object.
Definition HubConnection.cpp:139
virtual void Stop() override
Stops the hub connection.
Definition HubConnection.cpp:79
virtual FOnMethodCompletion & Invoke(const FString &EventName, const TArray< FSignalRValue > &InArguments=TArray< FSignalRValue >()) override
Invokes a hub method with the specified arguments and waits for the result.
Definition HubConnection.cpp:117
static constexpr float PingTimer
Definition HubConnection.h:43
virtual FORCEINLINE FOnHubConnectedEvent & OnConnected() override
Gets the event that is triggered when the hub connection is established.
Definition HubConnection.h:78
virtual bool IsTickable() const override
Determines if this object is tickable.
Definition HubConnection.h:160
Interface for a SignalR hub connection that enables real-time communication with a SignalR server.
Definition IHubConnection.h:110