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 );
}

 기술문서 TOP으로 돌아가기