채널
채널 입장, 채널 퇴장을 구현할 수 있고, 새로운 유저가 들어오거나 나갈 때 콜백을 이용할 수 있습니다.
팁
콘솔에서 언어(language
) 채널 그룹을 설정했다면, 유저가 채팅 서버에 접속할 때 언어에 따라 자동으로 채널에 입장합니다. 자동 채널 그룹을 설정하려면 콘솔 가이드 문서를 확인하세요.
주의
language
, country
, countrycode
, guild
, whisper
는 채널 그룹 이름으로 사용할 수 없습니다. 채널 자동 생성 기능에서 사용되는 예약어입니다.
설명
채널에 관련된 콜백 및 호출 함수, 정보 클래스입니다.
콜백 함수
// 채널 입장 완료 시 호출
void OnJoinChannel(BackndChat::ChannelInfo channelInfo)
{
// channelInfo: 채널 정보, 유저 목록, 이전 메시지 포함
}
// 채널 퇴장 완료 시 호출
void OnLeaveChannel(BackndChat::ChannelInfo channelInfo)
{
// channelInfo: 퇴장한 채널의 정보
}
// 다른 유저가 채널에 입장할 때 호출
void OnJoinChannelPlayer(
string channelGroup,
string channelName,
uint64_t channelNumber,
BackndChat::PlayerInfo player)
{
// player: 입장한 유저 정보
}
// 다른 유저가 채널에서 퇴장할 때 호출
void OnLeaveChannelPlayer(
string channelGroup,
string channelName,
uint64_t channelNumber,
BackndChat::PlayerInfo player)
{
// player: 퇴장한 유저 정보
}
호출 함수
// 프라이빗 채널 타입 만 SDK에서 채널을 생성 하실 수 있습니다.
// 다른 채널 타입은 콘솔을 이용해 주시길 바랍니다.
// 프라이빗 채널을 생성 하는 함수 입니다. 채널 그룹, 채널 번호, 채널 이름, 최대 인원, 비밀번호을 넣어서 보내 줍니다.
// 비밀번호를 넣지 않을 경우 공개 채널로 생성 됩니다.
// 채널 번호를 0으로 보낼 경우 서버에서 자동으로 채널 번호를 부여 합니다.
BackndChat::BDChatMain::SendCreatePrivateChannel(string channelGroup, uint64_t channelNumber = 0, string channelName = "default", uint32_t maxCount = 50, string password = "");
// 오픈 채널 타입의 채널 입장 함수 입니다. 채널 그룹, 채널 이름을 넣어서 보내 줍니다.
BackndChat::BDChatMain::SendJoinOpenChannel(string channelGroup, string channelName);
// 프라이빗 채널 타입의 채널 입장 함수 입니다. 채널 그룹, 채널 번호를 넣어서 보내 줍니다.
BackndChat::BDChatMain::SendJoinPrivateChannel(string channelGroup, uint64_t channelNumber, string password = "");
// 채널에서 나가는 함수 입니다. 채널 그룹, 채널 이름, 채널 번호를 넣어서 보내 줍니다.
BackndChat::BDChatMain::SendLeaveChannel(string channelGroup, string channelName, uint64_t channelNumber);
정보 클래스
ChannelInfo
채널 입장 시 제공되는 채널 정보입니다.
struct ChannelInfo
{
// 채널 그룹 이름
string ChannelGroup;
// 채널 이름
string ChannelName;
// 채널 번호
uint64_t ChannelNumber;
// 채널 최대 인원
uint32_t MaxCount;
// 현재 접속 중인 플레이어 정보
map<string, PlayerInfo> Players;
// 이전 채팅 메시지 리스트
vector<MessageInfo> Messages;
};
PlayerInfo
채널 내 유저 정보입니다.
struct PlayerInfo
{
// 플레이어 이름
string GamerName;
// 플레이어 아바타 이름
string Avatar;
// 플레이어 언어
string Language;
// 플레이어 메타 정보
map<string, string> Metadata;
};
이전 메시지 확인
void UChatManager::OnJoinChannel(const FChannelInfo& ChannelInfo)
{
// 이전 메시지 확인
for (const FMessageInfo& Msg : ChannelInfo.Messages)
{
UE_LOG(LogTemp, Log, TEXT("[이전메시지] %s: %s"),
*Msg.GamerName, *Msg.Message);
UE_LOG(LogTemp, Log, TEXT("전송시각: %s"), *Msg.SendTime);
}
// 현재 접속중인 유저 확인
for (const TPair<FString, FPlayerInfo>& Pair : ChannelInfo.Players)
{
UE_LOG(LogTemp, Log, TEXT("접속중: %s"),
*Pair.Value.GamerName);
}
}