Photon Chat 소개
시작하기
Photon Chat을 사용하여 플레이어들이 온라인 상에 있을 동안 계속 소통하도록 하게 해 주세요.
Photon Chat 어플리케이션은 연결할 때 유일한 어플리케이션과 AppId 가 필요 합니다.
무료 가입 후에 Chat 관리화면에서 AppId 를 받으세요.
접속
변경사항과 메시지를 받기 위하서 어플리케이션에 콜백으로 사용되고 있는 일부 메소드를 구현 해야 합니다.
C# 에서는 IChatClientListener
인터페이스로 정의 되어 있습니다.
데모에서는 IChatClientListener
인터페이스 구현을 위한 ChatClient
클래스를 사용하여 인스턴스를 생성합니다.
ChatClient
의 인스턴스 생성이 되면 접속 할 수 있습니다.
C#
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에서는 사용자 그룹 또는 주제별로 채널을 사용할 수 있습니다.
채널을 구독하는 사람은 모두 채널 내 공개된 모든 메시지들을 받습니다.
첫번째 구독인 경우이면 새로운 채널이 생성됩니다.
C#
chatClient.Subscribe( new string[] { "channelA", "channelB" } );
Subscribe 메소드는 구독할 채널을 문자열 배열로 전달합니다.
ChatClient.Service()
를 지속적으로 호출하여 연결을 계속 유지하고 수신 메시지를 받습니다.
C#
chatClient.Service();
이런 방식으로 새로운 메시지가 언제 올지 알게 됩니다.
전송
공개 메시지
이전에 구독하고 있는 채널에 메시지를 게시하고 싶을 것 입니다.
공개 메시지는 PublishMessage()
를 사용하여 채널의 모든 구독자에게 메시지를 전송합니다.
C#
chatClient.PublishMessage( "channelA", "So Long, and Thanks for All the Fish!" );
일반 문자열 이외에 Photon Chat 는 복합 메시지를 사용할 수 있습니다. 예, 초대와 같은
비밀 메시지
SendPrivateMessage()
로 이용자에게 비밀 메시지를 전송합니다.
C#
chatClient.SendPrivateMessage( "Arthur", "2 x 3 x 7" );
수신
공개 메시지
IChatClientListener 인터페이스의 OnGetMessages()
를 구현하여 공개 메시지 수신을 처리 합니다.
C#
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()
를 구현합니다.
C#
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()
메소드를 이용하여 플레이어의 온라인 상태를 설정 합니다.
실제 상태와 선택적으로 상태메시지를 전달 합니다.
C#
chatClient.SetOnlineStatus( UserStatus.Online, "Mostly Harmless" );
정수값으로 자신만의 상태를 정의 합니다.
친구들의 상태
Photon에게 사용자명 배열을 전달하여 앞으로의 상태 변경사항을 받습니다.
C#
friends = new List<string>() { "Ford", "Zaphod", "Marvin", "Eddie" };
chatClient.AddFriends(friends.ToArray());
친구마다 IChatClientListener 인터페이스의 OnStatusUpdate()
에 친구의 현재상태를 수신 할 것 입니다.
C#
OnStatusUpdate( string user, int status, bool gotMessage, object message )
{
Console.WriteLine( "Status change for: " + user + " to: " + status );
}
Back to top