Photon Chat 소개

시작하기

Photon Chat을 사용하여 플레이어들이 온라인 상에 있을 동안 계속 소통하도록 하게 해 주세요. Photon Chat 어플리케이션은 연결할 때 유일한 어플리케이션과 AppId 가 필요 합니다.

무료 가입 후에 Chat 관리화면에서 AppId 를 받으세요.

접속

변경사항과 메시지를 받기 위하서 어플리케이션에 콜백으로 사용되고 있는 일부 메소드를 구현 해야 합니다. C# 에서는 IChatClientListener 인터페이스로 정의 되어 있습니다.

데모에서는 IChatClientListener 인터페이스 구현을 위한 ChatClient 클래스를 사용하여 인스턴스를 생성합니다. ChatClient 의 인스턴스 생성이 되면 접속 할 수 있습니다.

chatClient = new ChatClient( this );
// Set your favourite region. "EU", "US", and "ASIA" are currently supported.
chatClient.ChatRegion = "EU";
chatClient.Connect( this.appId, "1.0", this.UserName, null );

AppId와는 별도로 Connect()는 임의의 문자열로 버전을 전달하고 유일하게 부여하여 가장 좋은 사용자명을 만들어 전달 합니다.

구독(Subscribe)

Photon Chat에서는 사용자 그룹 또는 주제별로 채널을 사용할 수 있습니다. 채널을 구독하는 사람은 모두 채널 내 공개된 모든 메시지들을 받습니다. 첫번째 구독인 경우이면 새로운 채널이 생성됩니다.

chatClient.Subscribe( new string[] { "channelA", "channelB" } );

Subscribe 메소드는 구독할 채널을 문자열 배열로 전달합니다.

ChatClient.Service()를 지속적으로 호출하여 연결을 계속 유지하고 수신 메시지를 받습니다.

chatClient.Service();

이런 방식으로 새로운 메시지가 언제 올지 알게 됩니다.

전송

공개 메시지

이전에 구독하고 있는 채널에 메시지를 게시하고 싶을 것 입니다. 공개 메시지는 PublishMessage()를 사용하여 채널의 모든 구독자에게 메시지를 전송합니다.

chatClient.PublishMessage( "channelA", "So Long, and Thanks for All the Fish!" );

일반 문자열 이외에 Photon Chat 는 복합 메시지를 사용할 수 있습니다. 예, 초대와 같은

비밀 메시지

SendPrivateMessage() 로 이용자에게 비밀 메시지를 전송합니다.

chatClient.SendPrivateMessage( "Arthur", "2 x 3 x 7" );

수신

공개 메시지

IChatClientListener 인터페이스의 OnGetMessages()를 구현하여 공개 메시지 수신을 처리 합니다.

public void OnGetMessages( string channelName, string[] senders, object[] messages )
{
   string msgs = "";
   for ( int i = 0; i < senders.Length; i++ )
   {
       msgs += senders[i] + "=" + messages[i] + ", ";
   }
   Console.WriteLine( "OnGetMessages: " + channelName + "(" + senders.Length + ") > " + msgs );
}

모든 공개 메시지는 일반적으로 Dictionary<string, ChatChannel> PublicChannels 로 캐시되므로 별도로 추적관리할 필요는 없습니다. PrivateChannels 에 대한 키는 채널 이름 입니다.

아주 길거나 현재 대화들은 각 채널을 이력으로 잘라내고 싶을 수 있습니다.

비밀 메시지

비밀 메시지를 수신하고 해석하기 위해서는 OnPrivateMessage()를 구현합니다.

public void OnPrivateMessage( string sender, object message, string channelName )
{
   ChatChannel ch = this.chatClient.PrivateChannels[ channelName ];
   foreach ( object msg in ch.Messages )
   {
       Console.WriteLine( msg );
   }
}

모든 비밀 메시지는 자동적으로 ChatClient.PrivateChannels 로 캐시되므로 별도로 추적 관리할 필요는 없습니다. PrivateChannels 에 대한 키는 채널 이름 입니다. (원격)사용자의 채널이름을 ChatClient.GetPrivateChannelNameByUser(name)를 이용하여 가져 옵니다.

온라인 상태

소유 상태

SetOnlineStatus() 메소드를 이용하여 플레이어의 온라인 상태를 설정 합니다. 실제 상태와 선택적으로 상태메시지를 전달 합니다.

chatClient.SetOnlineStatus( UserStatus.Online, "Mostly Harmless" );

정수값으로 자신만의 상태를 정의 합니다.

친구들의 상태

Photon에게 사용자명 배열을 전달하여 앞으로의 상태 변경사항을 받습니다.

friends = new List<string>() { "Ford", "Zaphod", "Marvin", "Eddie" };
chatClient.AddFriends(friends.ToArray());

친구마다 IChatClientListener 인터페이스의 OnStatusUpdate() 에 친구의 현재상태를 수신 할 것 입니다.

OnStatusUpdate( string user, int status, bool gotMessage, object message )
{
    Console.WriteLine( "Status change for: " + user + " to: " + status );
}

지원 받기

우리 Photon 팀(때로 포토니안이라고도 합니다 :)은 귀하를 도와드리려고 존재 합니다. 질문사항, 의문사항, ... 또는 잘 동작하지 않는 앱을 동작시키고 싶으신 경우 아래 형태를 선택하여 연락 주세요.

더 빠른 지원 받기

재현 단계를 포함하여 아래사항을 같이 주시면 빠른 지원을 받으 실 수 있습니다:

  • Photon 클라이언트 SDK 버전
    • SDK 압축 파일명의 부분입니다.
    • PUN의 경우는 PhotonNetwork.versionPun 값을 전달하여 주세요.
  • Photon Cloud
    • AppId Connect*() 호출할 때 설정되고 있는 게임 버전을 적어 주세요.
    • 룸에서 어려움을 겪고 있다면 RoomName과 룸의 서버 주소를 보내주세요. C# 에서 룸에 있을 동안 client.CurrentServerAddress를 로그에 기록해 주세요.
    • 지역서버 주소를 알려주세요.
  • Photon Server
    • 서버를 호스팅하시나요? 서버 SDK 버전을 알려주세요. 다시 말씀드리지만 SDK 압축 파일명에 있습니다.
    • log 를 추가해주세요.

연락 하기

문서에 추가적인 데모, 더 상세한 문서, FAQ 또는 예제 어플리케이션등 추가 및 보완해야 하는 사항이 있으면 알려주세요. 귀하의 의견은 developer@photonengine.kr 로 제안하여 주시면 감사하겠습니다.

Photon 에 대해서 더 많이 학습을 원하시나요?

시작하려면 무료 플랜을 시도 해 보세요

우리가 어떤 이벤트 행사에 참가하는지 알아보세요

미팅 요청을 하세요.

 기술문서 TOP으로 돌아가기