Photon Chatイントロ
はじめに
オンラインでPhoton Chatを使っているユーザーが継続的コミュニケーションをとれる手段を提供することができます。Photon Chatアプリは接続できる識別可能なアプリとAppIdが必要です。
無料でサインアップ した後、Photon ChatダッシュボードからAppIdを取得しましょう。
接続
アップデートやメッセージを受け取るには、コールバックとして使われる複数のメソッドを実装する必要があります。 C#でそれらはIChatClientListenerインターフェース内で定義されています。
デモではインスタンスを作成してIChatClientListenerインターフェースを実装するためにChatClientクラスを使います。 ChatClientが一度インスタンス化されれば接続ができます。
chatClient = new ChatClient( this );
chatClient.Connect( this.appId, "1.0", this.UserName, null );
AppID以外に、Connect()
はバージョン、任意の文字列、およびユーザー名(最良は固有の名前)に渡されます。
購読する
Photon Chatではチャンネルを使ってユーザー、もしくはトピックをグループ化することができます。チャンネルを購読した人は送信されるメッセージを全て受信します。 最初の購読により新しいチャンネルが作成されます。
chatClient.Subscribe( new string[] { "channelA", "channelB" } );
チャンネルを購読するため、購読メソッドには文字列の配列が渡されます。
継続的に'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 );
}
プライベートメッセージ
プライベートメッセージを受信してパースするには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 );
}
}
オンライン状態
自分のステータス
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 );
}