Skip to content

Commit 91ab7fc

Browse files
Add subscribe with result sample.
1 parent 7091176 commit 91ab7fc

File tree

2 files changed

+56
-0
lines changed

2 files changed

+56
-0
lines changed

Source/PubnubLibraryTests/Private/Samples/Sample_PubSub.cpp

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -393,6 +393,52 @@ void ASample_PubSub::OnMessageReceived_SubscribeWithPresenceSample(FPubnubMessag
393393
}
394394
}
395395

396+
// snippet.subscribe_with_result
397+
// ACTION REQUIRED: Replace ASample_PubSub with name of your Actor class
398+
void ASample_PubSub::SubscribeWithResultSample()
399+
{
400+
//Get PubnubSubsystem from GameInstance
401+
UGameInstance* GameInstance = UGameplayStatics::GetGameInstance(this);
402+
UPubnubSubsystem* PubnubSubsystem = GameInstance->GetSubsystem<UPubnubSubsystem>();
403+
404+
//Set UserID
405+
FString UserID = TEXT("Player_001");
406+
PubnubSubsystem->SetUserID(UserID);
407+
408+
//Add Listener/Delegate that will broadcast whenever message is received on any subscribed channel or group
409+
// ACTION REQUIRED: Replace ASample_PubSub with name of your Actor class
410+
PubnubSubsystem->OnMessageReceived.AddDynamic(this, &ASample_PubSub::OnMessageReceived_SubscribeSample);
411+
412+
//Add Listener/Delegate that will be called when subscribe operation is established with it's result
413+
//Note:: this is not listener for messages incoming to the subscribed channel
414+
// ACTION REQUIRED: Replace ASample_PubSub with name of your Actor class
415+
FOnSubscribeOperationResponse OnSubscribeOperationResponse;
416+
OnSubscribeOperationResponse.BindDynamic(this, &ASample_PubSub::OnSubscribeResultReceived);
417+
418+
//Subscribe to the Channel
419+
FString Channel = TEXT("guild_chat");
420+
PubnubSubsystem->SubscribeToChannel(Channel, OnSubscribeOperationResponse);
421+
}
422+
423+
// ACTION REQUIRED: Replace ASample_PubSub with name of your Actor class
424+
void ASample_PubSub::OnMessageReceived_SubscribeWithResultSample(FPubnubMessageData Message)
425+
{
426+
UE_LOG(LogTemp, Log, TEXT("Message received on Channel: %s, Message Content: %s"), *Message.Channel, *Message.Message);
427+
}
428+
429+
// ACTION REQUIRED: Replace ASample_PubSub with name of your Actor class
430+
void ASample_PubSub::OnSubscribeResultReceived(FPubnubOperationResult Result)
431+
{
432+
if(Result.Error)
433+
{
434+
UE_LOG(LogTemp, Error, TEXT("Failed to subscribe to channel. Status: %d, Reason: %s"), Result.Status, *Result.ErrorMessage);
435+
}
436+
else
437+
{
438+
UE_LOG(LogTemp, Log, TEXT("Subscribed to channel successfully."));
439+
}
440+
}
441+
396442
// snippet.unsubscribe_from_channel
397443
// ACTION REQUIRED: Replace ASample_PubSub with name of your Actor class
398444
void ASample_PubSub::UnsubscribeFromChannelSample()

Source/PubnubLibraryTests/Public/Samples/Sample_PubSub.h

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,16 @@ class PUBNUBLIBRARYTESTS_API ASample_PubSub : public APubnubSampleBase
9090
UFUNCTION()
9191
void OnMessageReceived_SubscribeWithPresenceSample(FPubnubMessageData Message);
9292

93+
// snippet.subscribe_with_result
94+
UFUNCTION(BlueprintCallable, Category = "Pubnub|Samples|PubSub")
95+
void SubscribeWithResultSample();
96+
97+
UFUNCTION()
98+
void OnMessageReceived_SubscribeWithResultSample(FPubnubMessageData Message);
99+
100+
UFUNCTION()
101+
void OnSubscribeResultReceived(FPubnubOperationResult Result);
102+
93103
// snippet.unsubscribe_from_channel
94104
UFUNCTION(BlueprintCallable, Category = "Pubnub|Samples|PubSub")
95105
void UnsubscribeFromChannelSample();

0 commit comments

Comments
 (0)