콘텐츠로 이동

채팅 서버 연결

SDK 채팅 기능은 Hive 채팅 소켓 서버와 Chat API로 통신하여 동작합니다. 따라서 SDK에서 채팅 기능을 이용하려면, 아래 가이드를 참고해 Hive 채팅 소켓 서버와 연결해야 합니다.

연결 요청

채팅에 연결하려면 Chat 클래스 connect 메서드를 호출합니다.

다음은 채팅 연결을 요청하는 예제 코드입니다.

Warning

Hive SDK 채팅 기능은 Hive SDK 인증 기능을 사용하여 로그인을 하고 PlayerID를 발급받은 사용자(게스트 계정 포함)만 이용할 수 있습니다.

using hive;

Chat.connect((ResultAPI result) => {
    if (result.isSuccess()) {
        // API Call Success
    }
});
#include "HiveChat.h"

FHiveChat::Connect(FHiveChatOnResultDelegate::CreateLambda([this](const FHiveResultAPI& Result) {
    if (Result.IsSuccess()) {
        // API Call Success
    }
}));
#include <HIVE_SDK_Plugin/HIVE_CPP.h>
using namespace hive;

Chat::connect([=](ResultAPI const & result) {
    if (result.isSuccess()) {
        // API Call Success
    }
});
import com.hive.Chat;
import com.hive.ResultAPI;

Chat.connect(object : Chat.ConnectListener {
    override fun onResult(result: ResultAPI) {
        if (result.isSuccess) {
            // API Call Success
        }
    }
})
import com.hive.Chat;

Chat.connect(result -> {
    if (result.isSuccess()) {
        // API Call Success
    }
});
import HIVEService

ChatInterface.connect { result in
    if result.isSuccess() {
        // API Call Success
    }
}
#import "HIVEService.h"

[HiveChat connectWithHandler:^(HIVEResultAPI * result) {
    if ([result isSuccess]) {
        // API Call Success
    }
}];

재연결 요청

채팅 연결은 네트워크 환경 또는 앱 상태 변화에 따라 일시적으로 해제될 수 있습니다.

재연결을 자동으로 요청하는 상황

다음과 같은 상황이 발생하면 SDK가 자동 재연결을 시작합니다.

  • 네트워크 연결이 일시적으로 차단된 경우
  • 앱이 백그라운드 상태였다가 포그라운드로 복귀한 경우
  • 서버의 일시적 상태 이상 등으로 연결이 종료된 경우

자동 재연결이 시작되면 OnReconnectStarted 이벤트가 발생합니다.

수동 재연결 요청

자동 재연결을 기다리지 않고 즉시 재연결해야 하면 Chat.reconnect()를 호출하세요. 채팅 소켓 서버 연결이 해제된 후 10분 이내에 재연결을 요청하면 이전에 참여한 채널에 자동으로 다시 입장을 시도합니다. 응답으로는 입장에 성공한 채널 목록과 실패한 채널 목록을 반환합니다.

수동 재연결 요청 예제 코드

다음은 채팅 재연결을 요청하는 예제 코드입니다.

using hive;

Chat.reconnect((ResultAPI result, List<String> channelIds, List<String> failChannelIds) => {
    if (result.isSuccess()) {
        // API Call Success
    }
});
#include "HiveChat.h"

FHiveChat::Reconnect(FHiveChatOnReconnectDelegate::CreateLambda([this](const FHiveResultAPI& Result, const TArray<FString>& ChannelIds, const TArray<FString>& FailChannelIds) {
    if (Result.IsSuccess()) {
        // API Call Success
    }
}));
#include <HIVE_SDK_Plugin/HIVE_CPP.h>
using namespace hive;

Chat::reconnect([=](ResultAPI const & result, std::vector<std::string>channelIds, std::vector<std::string>failChannelIds) {
    if (result.isSuccess()) {
        // API Call Success
    }
});
import com.hive.Chat;
import com.hive.ResultAPI;

Chat.reconnect(object : Chat.ReconnectListener {
    override fun onResult(result: ResultAPI, channelIds: ArrayList<String>, failChannelIds: ArrayList<String>) {
        if (result.isSuccess) {
            // API Call Success
        }
    }
})
import com.hive.Chat;

Chat.reconnect(result, channelIds, failChannelIds -> {
    if (result.isSuccess()) {
        // API Call Success
    }
});
import HIVEService

ChatInterface.connect { result, channelIds, failChannelIds in
    if result.isSuccess() {
        // API Call Success
    }
}
#import "HIVEService.h"

[HiveChat reconnectWithHandler:^(HIVEResultAPI * result, NSArray<NSString *> * channelIds,  NSArray<NSString *> * failChannelIds) {
    if ([result isSuccess]) {
        // API Call Success
    }
}];

연결 해제 요청

채팅 연결을 해제하려면 Chat 클래스 disconnect() 메서드를 호출합니다. 아래는 채팅 연결을 해제하는 예제 코드입니다.

Note

앱 사용자 계정이 로그아웃하면 채팅 연결 해제 요청을 자동으로 실행합니다.

using hive;

Chat.disconnect((ResultAPI result) => {
    if (result.isSuccess()) {
        // API Call Success
    }
});
#include "HiveChat.h"

FHiveChat::Disconnect(FHiveChatOnResultDelegate::CreateLambda([this](const FHiveResultAPI& Result) {
    if (Result.IsSuccess()) {
        // API Call Success
    }
}));
#include <HIVE_SDK_Plugin/HIVE_CPP.h>
using namespace hive;

Chat::disconnect([=](ResultAPI const & result) {
    if (result.isSuccess()) {
        // API Call Success
    }
});
import com.hive.Chat;
import com.hive.ResultAPI;

Chat.disconnect(object : Chat.DisconnectListener {
    override fun onResult(result: ResultAPI) {
        if (result.isSuccess) {
            // API Call Success
        }
    }
})
import com.hive.Chat;

Chat.disconnect(result -> {
    if (result.isSuccess()) {
        // API Call Success
    }
});
import HIVEService

ChatInterface.disconnect(result) {
    if result.isSuccess() {
        // API Call Success
    }
}
#import "HIVEService.h"

[HiveChat disconnectWithHandler:^(HIVEResultAPI * result) {
    if ([result isSuccess]) {
        // API Call Success
    }
}];

연결 상태 확인

앱 사용자가 현재 채팅에 연결되었는지 상태를 확인합니다. Chat 클래스 isConnected 메서드를 호출합니다.

다음은 채팅 연결 상태를 확인하는 예제 코드입니다.

using hive;

Boolean isConnected = Chat.isConnected();
#include "HiveChat.h"

bool IsConnected = FHiveChat::IsConnected();
#include <HIVE_SDK_Plugin/HIVE_CPP.h>
using namespace hive;

bool isConnected = Chat::isConnected();
import com.hive.Chat;

val isConnected = Chat.isConnected()
import com.hive.Chat;

Boolean isConnected = Chat.isConnected();
import HIVEService

let isConnected = ChatInterface.isConnected()
#import "HIVEService.h"

bool isConnected = [ChatInterface isConnected];

연결 이벤트 관리

Hive 채팅 소켓 서버 연결 상태를 감지하고 상태 변경 이벤트를 앱에 지속적으로 전달합니다. 자세한 이벤트 처리 방법은 이벤트 관리 > 연결 이벤트 문서를 참고하세요.