뒤끝챗 접속지연

  • 뒤끝 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);
            }
        }


    }

확인 감사합니다.

채팅 채널에 입장하는 로직은 크게 두 가지로 나누어집니다.

  1. 채널 리스트를 얻어오기 (GetGroupChannelList)
  2. 실제 채널에 입장하기 (JoinChannel)

2번의 경우는 사용하신 대로 OnJoinChannel 이벤트로 비동기로 이루어집니다.
1번의 비동기 사용은 아래 개발자 문서를 참고해서 제작해 주시면 감사하겠습니다.

추가로 입장 이후 GetRecentChat을 하기 위해서 한 번 더 GetGroupChannelList 호출이 이루어지는데,
이 같은 경우도 처음 호출 시에 얻은 채널 정보를 가지고 있다가 바로 GetRecentChat 을 호출해 주셔야 끊김 현상이 사라집니다. :D

좋아요 1