- 뒤끝 SDK 버전 : 5.7.0
- 프로젝트명 : deathlord
- 스테이터스 코드 :
게임내 뒤끝챗을 접속할시에 게임멈춤현상이 발생하는것같습니다…
확인부탁드리겠습니다
게임내 뒤끝챗을 접속할시에 게임멈춤현상이 발생하는것같습니다…
확인부탁드리겠습니다
안녕하세요 개발자님,
혹 뒤끝챗 GetGroupChannelList 함수를 비동기로 이용하고 계신 것이 맞으신지 확인해 주시면 감사하겠습니다.
Backend.Chat.OnJoinChannel = (JoinChannelEventArgs args) =>
{
}
해당함수의 비동기를통해
GetGroupChannelList는 동기함수로 호출하고있는것같습니다.
혹시몰라 풀소스로 업로드했습니다.
public void EntryPublic()
{
if(ChattingObj.gameObject.activeSelf == true)
{
ChattingObj.gameObject.SetActive(false);
}
else if(ChattingObj.gameObject.activeSelf == false)
{
ChattingObj.gameObject.SetActive(true);
}
string groupName = "testpublic";
string serverAddress = "";
string alias = "";
string inDate = "";
ushort serverPort = 50000;
var bro = Backend.Chat.GetGroupChannelList(groupName);
if (bro.IsSuccess())
{
var channels = bro.Rows();
for (int i = 0; i < channels.Count; ++i)
{
string counts = channels[i]["joinedUserCount"].ToString();
int num = int.Parse(counts);
if (num >= 190)
{
continue;
}
else
{
// 들어갈 채널을 찾았으면 정보를 받고 채널 탐색 종료(break)
serverAddress = channels[i]["serverAddress"].ToString();
alias = channels[i]["alias"].ToString();
inDate = channels[i]["inDate"].ToString();
serverPort = ushort.Parse(channels[i]["serverPort"].ToString());
break;
}
}
ErrorInfo errorInfo;
Backend.Chat.JoinChannel(ChannelType.Public, serverAddress, 50000, groupName, inDate, out errorInfo);
join(); // 내가참여할시 발생이벤트
}
else
{
Debug.Log("Error to GetGroupChannelList: " + bro);
}
}
public void join()
{
Debug.Log("조인호출됨");
Backend.Chat.SetFilterUse(true);
Backend.Chat.OnJoinChannel = (JoinChannelEventArgs args) =>
{
if (args.ErrInfo == ErrorInfo.Success)
{
if (!args.Session.IsRemote)
{
getChattings();
}
else
{
}
}
else
{
}
};
}
public void getChattings()
{
BackendReturnObject bro = Backend.Chat.GetGroupChannelList("testpublic");
string channelIndate = bro.GetReturnValuetoJSON()["rows"][0]["inDate"].ToString();
int iCount = chatbox.transform.childCount;
if(iCount >= 0){
BackendReturnObject result = Backend.Chat.GetRecentChat(ChannelType.Public , channelIndate , 20);
for(int i=0; i< result.Rows().Count; i++)
{
string nickname = result.Rows()[i]["nickname"].ToString();
string message = result.Rows()[i]["message"].ToString();
chatobj.GetComponent<Text>().text = nickname + message;
Instantiate (chatobj, new Vector3 (0, 0, 0), Quaternion.identity, chatbox);
}
}
}
확인 감사합니다.
채팅 채널에 입장하는 로직은 크게 두 가지로 나누어집니다.
2번의 경우는 사용하신 대로 OnJoinChannel 이벤트로 비동기로 이루어집니다.
1번의 비동기 사용은 아래 개발자 문서를 참고해서 제작해 주시면 감사하겠습니다.
추가로 입장 이후 GetRecentChat을 하기 위해서 한 번 더 GetGroupChannelList 호출이 이루어지는데,
이 같은 경우도 처음 호출 시에 얻은 채널 정보를 가지고 있다가 바로 GetRecentChat 을 호출해 주셔야 끊김 현상이 사라집니다. :D