KLingo Project Documentation 1.0.0
Unreal Engine 5.6 C++ Project Documentation
로딩중...
검색중...
일치하는것 없음
UWebSocketSystem 클래스 참조

WebSocket 기반 실시간 상호작용을 관리하는 게임 인스턴스 서브시스템입니다. 더 자세히 ...

#include <UWebSocketSystem.h>

+ UWebSocketSystem에 대한 상속 다이어그램 :
+ UWebSocketSystem에 대한 협력 다이어그램:

Public 멤버 함수

void Connect ()
 WebSocket 서버와 연결을 수립합니다.
 
 DEFINE_SUBSYSTEM_GETTER_INLINE (UWebSocketSystem)
 
void Disconnect ()
 활성화된 WebSocket 연결을 종료합니다.
 
bool IsConnected () const
 현재 WebSocket 연결 상태를 조회합니다.
 
void SendPing ()
 연결 상태 유지를 위해 Ping 메시지를 전송합니다.
 

Private 멤버 함수

virtual void Deinitialize () override
 
virtual void Initialize (FSubsystemCollectionBase &Collection) override
 
void OnBinaryMessage_Native (const void *Data, SIZE_T Size, bool bIsLastFragment)
 바이너리 메시지를 수신했을 때 호출됩니다.
 
void OnClosed_Native (int32 StatusCode, const FString &Reason, bool bWasClean)
 연결 종료 이벤트를 처리합니다.
 
void OnConnected_Native ()
 WebSocket 연결 완료 콜백입니다.
 
void OnConnectionError_Native (const FString &InErrorMessage)
 연결 오류 발생 시 호출되는 콜백입니다.
 
void OnMessage_Native (const FString &InMessage)
 텍스트 메시지를 수신했을 때 호출됩니다.
 

정적 Private 멤버 함수

static void LogNetwork (const FString &Message)
 WebSocket 관련 공통 로그 메시지를 출력합니다.
 

Private 속성

bool bIsExpectingAudio = false
 서버에서 오디오 스트림 시작을 예상하는지 여부입니다.
 
TSharedPtr< IWebSocket > WebSocket
 활성 WebSocket 인스턴스입니다.
 

상세한 설명

WebSocket 기반 실시간 상호작용을 관리하는 게임 인스턴스 서브시스템입니다.

텍스트 및 오디오 스트림을 위한 지속 연결을 유지하며 연결 상태를 게임 전역에서 공유합니다. 연결 수명은 GameInstance와 동일하며, 네트워크 교체나 종료 시 명시적으로 정리합니다. 사용 위치: 음성 대화/실시간 피드백 시스템에서 공통 연결 관리.

UWebSocketSystem.h 파일의 23 번째 라인에서 정의되었습니다.

멤버 함수 문서화

◆ Connect()

void UWebSocketSystem::Connect ( )

WebSocket 서버와 연결을 수립합니다.

기존 연결이 없을 때만 새 연결을 시도하며 비동기 연결 이벤트를 발생시킵니다. 사이드이펙트: 내부 WebSocket 인스턴스를 생성하고 연결 상태를 변경합니다.

UWebSocketSystem.cpp 파일의 43 번째 라인에서 정의되었습니다.

44{
45 if (IsConnected())
46 {
47 LogNetwork(TEXT("Already connected."));
48 return;
49 }
50
51 const FString Url = NetworkConfig::GetSocketURL();
52 if (Url.IsEmpty())
53 {
54 LogNetwork(TEXT("WebSocket URL is empty. Please check your configuration in DefaultMyNetwork.ini."));
55 return;
56 }
57
58 LogNetwork(FString::Printf(TEXT("Connecting to %s"), *Url));
59
60 FWebSocketsModule& WebSocketModule = FModuleManager::LoadModuleChecked<FWebSocketsModule>(TEXT("WebSockets"));
61 WebSocket = WebSocketModule.CreateWebSocket(Url, TEXT("ws"));
62
63 // Bind native delegates
64 WebSocket->OnConnected().AddUObject(this, &UWebSocketSystem::OnConnected_Native);
65 WebSocket->OnConnectionError().AddUObject(this, &UWebSocketSystem::OnConnectionError_Native);
66 WebSocket->OnClosed().AddUObject(this, &UWebSocketSystem::OnClosed_Native);
67 WebSocket->OnMessage().AddUObject(this, &UWebSocketSystem::OnMessage_Native);
68 WebSocket->OnBinaryMessage().AddUObject(this, &UWebSocketSystem::OnBinaryMessage_Native);
69
70 WebSocket->Connect();
71}
void OnBinaryMessage_Native(const void *Data, SIZE_T Size, bool bIsLastFragment)
바이너리 메시지를 수신했을 때 호출됩니다.
void OnMessage_Native(const FString &InMessage)
텍스트 메시지를 수신했을 때 호출됩니다.
TSharedPtr< IWebSocket > WebSocket
활성 WebSocket 인스턴스입니다.
void OnConnectionError_Native(const FString &InErrorMessage)
연결 오류 발생 시 호출되는 콜백입니다.
void OnClosed_Native(int32 StatusCode, const FString &Reason, bool bWasClean)
연결 종료 이벤트를 처리합니다.
void OnConnected_Native()
WebSocket 연결 완료 콜백입니다.
static void LogNetwork(const FString &Message)
WebSocket 관련 공통 로그 메시지를 출력합니다.
bool IsConnected() const
현재 WebSocket 연결 상태를 조회합니다.
static FString GetSocketURL()
현재 서버 모드에서 사용할 WebSocket 주소를 반환합니다.
Definition NetworkData.h:68

다음을 참조함 : NetworkConfig::GetSocketURL(), IsConnected(), LogNetwork(), OnBinaryMessage_Native(), OnClosed_Native(), OnConnected_Native(), OnConnectionError_Native(), OnMessage_Native(), WebSocket.

+ 이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:

◆ DEFINE_SUBSYSTEM_GETTER_INLINE()

UWebSocketSystem::DEFINE_SUBSYSTEM_GETTER_INLINE ( UWebSocketSystem  )

◆ Deinitialize()

void UWebSocketSystem::Deinitialize ( )
overrideprivatevirtual

UWebSocketSystem.cpp 파일의 22 번째 라인에서 정의되었습니다.

23{
24 if (WebSocket.IsValid())
25 {
26 // Unbind all delegates
27 WebSocket->OnConnected().RemoveAll(this);
28 WebSocket->OnConnectionError().RemoveAll(this);
29 WebSocket->OnClosed().RemoveAll(this);
30 WebSocket->OnMessage().RemoveAll(this);
31 WebSocket->OnBinaryMessage().RemoveAll(this);
32
33 if (WebSocket->IsConnected())
34 {
35 WebSocket->Close();
36 }
37 }
38 Super::Deinitialize();
39}

다음을 참조함 : WebSocket.

◆ Disconnect()

void UWebSocketSystem::Disconnect ( )

활성화된 WebSocket 연결을 종료합니다.

연결 종료 후 관련 콜백이 호출되며 내부 상태를 초기화합니다. 사이드이펙트: 네트워크 연결을 끊고 내부 연결 상태를 변경합니다.

UWebSocketSystem.cpp 파일의 73 번째 라인에서 정의되었습니다.

74{
75 if (WebSocket.IsValid() && WebSocket->IsConnected())
76 {
77 LogNetwork(TEXT("Disconnecting..."));
78 WebSocket->Close();
79 }
80}

다음을 참조함 : LogNetwork(), WebSocket.

+ 이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:

◆ Initialize()

void UWebSocketSystem::Initialize ( FSubsystemCollectionBase &  Collection)
overrideprivatevirtual

UWebSocketSystem.cpp 파일의 16 번째 라인에서 정의되었습니다.

17{
18 Super::Initialize(Collection);
19 bIsExpectingAudio = false;
20}
bool bIsExpectingAudio
서버에서 오디오 스트림 시작을 예상하는지 여부입니다.

다음을 참조함 : bIsExpectingAudio.

◆ IsConnected()

bool UWebSocketSystem::IsConnected ( ) const

현재 WebSocket 연결 상태를 조회합니다.

로컬 상태만 조회하며 네트워크 요청을 발생시키지 않습니다.

반환값
연결되어 있으면 true입니다.

UWebSocketSystem.cpp 파일의 82 번째 라인에서 정의되었습니다.

83{
84 return WebSocket.IsValid() && WebSocket->IsConnected();
85}

다음을 참조함 : WebSocket.

다음에 의해서 참조됨 : Connect(), SendPing().

+ 이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ LogNetwork()

void UWebSocketSystem::LogNetwork ( const FString &  Message)
staticprivate

WebSocket 관련 공통 로그 메시지를 출력합니다.

UWebSocketSystem.cpp 파일의 173 번째 라인에서 정의되었습니다.

174{
175 NETWORK_LOG(TEXT("[WS] %s"), *Message);
176}
#define NETWORK_LOG(fmt,...)

다음을 참조함 : NETWORK_LOG.

다음에 의해서 참조됨 : Connect(), Disconnect(), OnBinaryMessage_Native(), OnClosed_Native(), OnConnected_Native(), OnConnectionError_Native(), OnMessage_Native(), SendPing().

+ 이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ OnBinaryMessage_Native()

void UWebSocketSystem::OnBinaryMessage_Native ( const void *  Data,
SIZE_T  Size,
bool  bIsLastFragment 
)
private

바이너리 메시지를 수신했을 때 호출됩니다.

매개변수
Data[in] 수신 버퍼 시작 주소입니다.
Size[in] 버퍼 크기입니다.
bIsLastFragment[in] 해당 프레임이 마지막 조각인지 여부입니다.

UWebSocketSystem.cpp 파일의 165 번째 라인에서 정의되었습니다.

166{
167 LogNetwork(FString::Printf(TEXT("Received binary message (%d bytes) - Currently not supported"), Size));
168 // 바이너리 메시지는 현재 사용하지 않음 (모든 오디오는 JSON의 Base64로 전송됨)
169}

다음을 참조함 : LogNetwork().

다음에 의해서 참조됨 : Connect().

+ 이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:
+ 이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ OnClosed_Native()

void UWebSocketSystem::OnClosed_Native ( int32  StatusCode,
const FString &  Reason,
bool  bWasClean 
)
private

연결 종료 이벤트를 처리합니다.

매개변수
StatusCode[in] WebSocket 상태 코드입니다.
Reason[in] 종료 사유입니다.
bWasClean[in] 정상 종료 여부입니다.

UWebSocketSystem.cpp 파일의 114 번째 라인에서 정의되었습니다.

115{
116 LogNetwork(FString::Printf(TEXT("Connection closed. Code: %d, Reason: %s, Clean: %s"), StatusCode, *Reason, bWasClean ? TEXT("true") : TEXT("false")));
117 bIsExpectingAudio = false;
118 // OnClosed.Broadcast(StatusCode, Reason, bWasClean);
119}

다음을 참조함 : bIsExpectingAudio, LogNetwork().

다음에 의해서 참조됨 : Connect().

+ 이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:
+ 이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ OnConnected_Native()

void UWebSocketSystem::OnConnected_Native ( )
private

WebSocket 연결 완료 콜백입니다.

UWebSocketSystem.cpp 파일의 101 번째 라인에서 정의되었습니다.

102{
103 LogNetwork(TEXT("Connection successful."));
104 bIsExpectingAudio = false;
105 // OnConnected.Broadcast();
106}

다음을 참조함 : bIsExpectingAudio, LogNetwork().

다음에 의해서 참조됨 : Connect().

+ 이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:
+ 이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ OnConnectionError_Native()

void UWebSocketSystem::OnConnectionError_Native ( const FString &  InErrorMessage)
private

연결 오류 발생 시 호출되는 콜백입니다.

매개변수
InErrorMessage[in] 서버에서 전달된 에러 메시지입니다.

UWebSocketSystem.cpp 파일의 108 번째 라인에서 정의되었습니다.

109{
110 LogNetwork(FString::Printf(TEXT("Connection failed: %s"), *InErrorMessage));
111 // OnConnectionError.Broadcast(InErrorMessage);
112}

다음을 참조함 : LogNetwork().

다음에 의해서 참조됨 : Connect().

+ 이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:
+ 이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ OnMessage_Native()

void UWebSocketSystem::OnMessage_Native ( const FString &  InMessage)
private

텍스트 메시지를 수신했을 때 호출됩니다.

매개변수
InMessage[in] 서버에서 전달한 JSON/문자열입니다.

UWebSocketSystem.cpp 파일의 121 번째 라인에서 정의되었습니다.

122{
123 TSharedPtr<FJsonObject> JsonObject;
124 TSharedRef<TJsonReader<>> Reader = TJsonReaderFactory<>::Create(InMessage);
125
126 if (!FJsonSerializer::Deserialize(Reader, JsonObject) || !JsonObject.IsValid())
127 {
128 LogNetwork(FString::Printf(TEXT("Failed to parse incoming JSON message: %s"), *InMessage));
129 return;
130 }
131
132 FString MessageType;
133 if (!JsonObject->TryGetStringField(TEXT("type"), MessageType))
134 {
135 LogNetwork(FString::Printf(TEXT("Incoming JSON has no 'type' field: %s"), *InMessage));
136 return;
137 }
138
139 if (MessageType == TEXT("pong"))
140 {
141 LogNetwork(TEXT("Received Pong"));
142 }
143 else if (MessageType == TEXT("error"))
144 {
145 LogNetwork(FString::Printf(TEXT("Received message: %s"), *InMessage));
146
147 FString ErrorMessage;
148 if (JsonObject->TryGetStringField(TEXT("message"), ErrorMessage))
149 {
150 LogNetwork(FString::Printf(TEXT("Server Error: %s"), *ErrorMessage));
151 // OnSocketError.Broadcast(ErrorMessage);
152 }
153 else
154 {
155 LogNetwork(TEXT("Server Error: (no message field)"));
156 // OnSocketError.Broadcast(TEXT("Unknown server error"));
157 }
158 }
159 else
160 {
161 LogNetwork(FString::Printf(TEXT("Unknown message type received: %s"), *MessageType));
162 }
163}

다음을 참조함 : LogNetwork().

다음에 의해서 참조됨 : Connect().

+ 이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:
+ 이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ SendPing()

void UWebSocketSystem::SendPing ( )

연결 상태 유지를 위해 Ping 메시지를 전송합니다.

서버의 연결 유지 정책에 따라 주기적으로 호출될 수 있습니다. 사이드이펙트: 네트워크로 Ping 프레임을 송신합니다.

UWebSocketSystem.cpp 파일의 87 번째 라인에서 정의되었습니다.

88{
89 if (!IsConnected())
90 {
91 LogNetwork(TEXT("Cannot send ping. Not connected."));
92 return;
93 }
94
95 LogNetwork(TEXT("Sending Ping"));
96 WebSocket->Send(TEXT("{\"type\":\"ping\"}"));
97}

다음을 참조함 : IsConnected(), LogNetwork(), WebSocket.

+ 이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:

멤버 데이터 문서화

◆ bIsExpectingAudio

bool UWebSocketSystem::bIsExpectingAudio = false
private

서버에서 오디오 스트림 시작을 예상하는지 여부입니다.

UWebSocketSystem.h 파일의 96 번째 라인에서 정의되었습니다.

다음에 의해서 참조됨 : Initialize(), OnClosed_Native(), OnConnected_Native().

◆ WebSocket

TSharedPtr<IWebSocket> UWebSocketSystem::WebSocket
private

활성 WebSocket 인스턴스입니다.

UWebSocketSystem.h 파일의 93 번째 라인에서 정의되었습니다.

다음에 의해서 참조됨 : Connect(), Deinitialize(), Disconnect(), IsConnected(), SendPing().


이 클래스에 대한 문서화 페이지는 다음의 파일들로부터 생성되었습니다.: