Photon Chat 소개

시작하기

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

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

Back To Top

접속

변경사항과 메시지를 받기 위하서 어플리케이션에 콜백으로 사용되고 있는 일부 메소드를 구현 해야 합니다. 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()는 임의의 문자열로 버전을 전달하고 유일하게 부여하여 가장 좋은 사용자명을 만들어 전달 합니다.

Back To Top

구독(Subscribe)

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

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

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

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

chatClient.Service();

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

Back To Top

전송

공개 메시지

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

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

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

Back To Top

비밀 메시지

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

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

Back To Top

수신

공개 메시지

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 에 대한 키는 채널 이름 입니다.

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

Back To Top

비밀 메시지

비밀 메시지를 수신하고 해석하기 위해서는 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)를 이용하여 가져 옵니다.

Back To Top

온라인 상태

소유 상태

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

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

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

Back To Top

친구들의 상태

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으로 돌아가기