パッケージnet.user1.reactor
クラスpublic class ClientManager
継承ClientManager Inheritance flash.events.EventDispatcher

バージョン : Reactor 1.0.0

ClientManagerクラスはUnionサーバーに接続しているクライアントを表すClientインスタンスへの中央管理的なアクセスを提供します。 現クライアントに把握されている(例えば、現クライアントと同じルームに入室しているクライアント)いずれのクライアントもClientManagerのgetClient()メソッドを通してアクセスできます。 例えば、

reactor.getClientManager().getClient(someClientID);

現クライアントのサーバー上のクライアントリストとサーバーの状態との同期を保つには、watchForClients()メソッドを次のように使用してください:

reactor.getClientManager().watchForClients();

ClientManagerを使用してクライアントオブジェクトに使用するデフォルトのカスタムクラスを指定することもできます。 setDefaultClientClass()メソッドを参照してください。

関連項目

Client
watchForClients()
setDefaultClientClass()


パブリック メソッド
 メソッド定義元
  
ClientManager(roomManager:RoomManager, accountManager:AccountManager, connectionManager:ConnectionManager, messageManager:MessageManager, server:Server, log:Logger)
コンストラクタ
ClientManager
  
clientIsKnown(clientID:String):Boolean
指定のclientIDのクライアントが現クライアントによって把握されているかどうかを示す論理値を返します。
ClientManager
  
dispose():void
このオブジェクトを永久に無効化します。
ClientManager
  
getAttributeForClients(clientIDs:Array, attrName:String, attrScope:String):Array
渡されたclientIDs内の全クライアントの指定した属性の値を含むオブジェクトの配列を返します
ClientManager
  
getClient(clientID:String, scope:String = null):IClient
指定のクライアントを表すオブジェクトを返します。 デフォルトでは、そのオブジェクトはnet.user1.reactor.Clientクラスのインスタンスです。
ClientManager
  
getClientByAttribute(attributeName:String, attributeValue:String, attributeScope:String = null, roomScope:String = null):IClient
指定した属性名と値と一致する属性名と値を持っているようなクライアントで、ClientManagerが把握している最初のものを返します。
ClientManager
  
getClientByUserID(userID:String, scope:String = null):IClient
userIDによって指定されるアカウントにログインしたクライアントを返します。
ClientManager
  
getClients():Array
現クライアントが把握している全てのクライアントオブジェクトのリストを返します。
ClientManager
  
このアプリケーション内のクライアントが使用するグローバルのデフォルトクラスを返します。
ClientManager
  
getInternalClient(clientID:String):Client
指定したクライアントIDの内部のClientオブジェクトを返します。
ClientManager
  
自分自身を除いて、現クライアントがこれまでに把握したクライアントの合計数を返します。
ClientManager
  
現クライアントを除いてReactorが把握しているクライアント数を返します。
ClientManager
  
もしClientManagerがクライアントを監視している場合、getNumClientsOnServer()はサーバー上のクライアント数を返します。そうでない場合、getNumClientsOnServer()は0を返します。
ClientManager
  
hasWatchedClient(clientID:String):Boolean
もし指定のclientIDを持つクライアントが監視中のクライアントリスト内にある場合はtrueを、そうでない場合はfalseを返します。
ClientManager
  
isObservingClient(clientID:String):Boolean
もし指定のclientIDを持つクライアントが現在観察されている場合はtrueを、そうでない場合はfalseを返します。
ClientManager
  
現クライアントが現在クライアントを監視しているかどうかを示します。
ClientManager
  
observeClient(clientID:String):void
現クライアントをclientIDで指定したクライアントのオブザーバーとして登録するようにサーバーに要求します。
ClientManager
  
sendMessage(messageName:String, clientIDs:Array = null, filters:IFilter = null, ... rest):void
指定のclientIDsのセットにメッセージを送信します。
ClientManager
  
setDefaultClientClass(defaultClass:Class):void
クラスをReactorアプリケーション内の全クライアントのデフォルトクラスとして使用するように割り当てます。
ClientManager
  
クライアントの監視を停止するようにサーバーに要求します。
ClientManager
  
現在サーバーに接続中のクライアントのリストを送信し、その後クライアントが接続か切断したときにはいつでも通知を送信するようにサーバーに要求します。
ClientManager
Events
 Event Summary 定義元
   ClientManagerがUnionサーバーからクライアントの接続を通知されたときに送出されます。ClientManager
   ClientManagerがUnionサーバーからクライアントの切断を通知されたときに送出されます。ClientManager
   現クライアントがクライアントを観察するときに送出されます。ClientManager
   先に行われたClient.observe()かClientManager.observeClient()要求の結果を受信したときに送出されます。ClientManager
   現クライアントがクライアントの観察を停止するときに送出されます。ClientManager
   先に行われたClient.stopObserving()かClientManager.stopObservingClient()要求の結果を受信したときに送出されます。ClientManager
   ClientManagerが先に行われたstopWatchingForClients()要求の結果を受信するときに送出されます。ClientManager
   watchForClients()要求の後にClientManagerのクライアントリストの同期が完了するときに送出されます。ClientManager
   ClientManagerが先に行われたwatchForClients()要求の結果を受信するときに送出されます。ClientManager
コンストラクタの詳細
ClientManager()コンストラクタ
public function ClientManager(roomManager:RoomManager, accountManager:AccountManager, connectionManager:ConnectionManager, messageManager:MessageManager, server:Server, log:Logger)

コンストラクタ

パラメータ
roomManager:RoomManager
 
accountManager:AccountManager
 
connectionManager:ConnectionManager
 
messageManager:MessageManager
 
server:Server
 
log:Logger
メソッドの詳細
clientIsKnown()メソッド
public function clientIsKnown(clientID:String):Boolean

バージョン : Reactor 1.0.0

指定のclientIDのクライアントが現クライアントによって把握されているかどうかを示す論理値を返します。 クライアントは次の状況で把握されます:

パラメータ

clientID:String

戻り値
Boolean
dispose()メソッド 
public function dispose():void

このオブジェクトを永久に無効化します。 このオブジェクトは再利用できません。 dispose()メソッドの目的はこのオブジェクトをガーベッジコレクトの対象とすることです(例えば、.swfファイルをアンロードする前に)。 ClientManagerクラスのdispose()メソッドはReactorクラスのdispose()が発動したときに自動的に発動します。

getAttributeForClients()メソッド 
public function getAttributeForClients(clientIDs:Array, attrName:String, attrScope:String):Array

バージョン : Reactor 1.0.0

渡されたclientIDs内の全クライアントの指定した属性の値を含むオブジェクトの配列を返します 配列中の各オブジェクトはclientIDプロパティ(そのクライアントのID)とvalueプロパティ(その属性値)を持ちます。 clientIDs内のクライアントで、存在しないか指定の属性にセットされた値を持たないもののvalueプロパティはnullになります。

クライアント属性についての詳細はClientクラスのsetAttribute()メソッドを参照してください。

パラメータ

clientIDs:Array — 指定した属性を受信するクライアントを示すクライアントIDの配列です。
 
attrName:String — 取り出す属性名です。
 
attrScope:String — 読み出す属性のスコープです。 グローバル属性にはnullを使用するか、省略してください。

戻り値
Array

関連項目



次のコードは特定のルーム内の全クライアントの年齢を取得するためにどのようにgetAttributeForClients()を使うかという実例を示します。
     var theRoom:Room = reactor.getRoomManager().getRoom("examples.chatroom");
     var clientList:Array = theRoom.getClientIDs();
     // ここで、"username"属性はグローバルなので、attrScopeは省略されます。
     var attrList:Array = reactor.getClientManager().getAttributeForClients(
                                                                    clientList,
                                                                    "age");
     
     for each (var item:Object in attrList) {
       trace("The value of 'age' for client "
             + item.clientID + " is: " + item.value);
     }
getClient()メソッド 
public function getClient(clientID:String, scope:String = null):IClient

バージョン : Reactor 1.0.0

指定のクライアントを表すオブジェクトを返します。 デフォルトでは、そのオブジェクトはnet.user1.reactor.Clientクラスのインスタンスです。 しかし、指定したスコープのクライアントとしてカスタムクラスが指定されていた場合、オブジェクトはそのカスタムクラスのインスタンスとなります。 ClientのカスタムクラスはIClientのsetClientClass()メソッド、RoomクラスのsetDefaultClientClass()メソッドとClientManagerのsetDefaultClientClass()メソッドを通して指定できます。

クライアントオブジェクトのクラスは次のように決定されます:

パラメータ

clientID:String — そのクライアントにサーバーが生成したクライアントIDです。
 
scope:String (default = null) — 完全修飾ルームID(たとえば、"examples.chatRoom")です。 グローバルスコープについてはnullを使用してください。

戻り値
IClient

関連項目

getClientByAttribute()メソッド 
public function getClientByAttribute(attributeName:String, attributeValue:String, attributeScope:String = null, roomScope:String = null):IClient

バージョン : Reactor 1.0.0

指定した属性名と値と一致する属性名と値を持っているようなクライアントで、ClientManagerが把握している最初のものを返します。 一致する属性を持つクライアントがなかった場合、nullを返します。

パラメータ

attributeName:String — 一致させる属性名です。
 
attributeValue:String — 一致させる属性値です。
 
attributeScope:String (default = null) — 一致させる属性のスコープです。 グローバルスコープにはnullを使用します。
 
roomScope:String (default = null) — 完全修飾ルームID(たとえば、"examples.chatRoom")です。 詳細は、getClient()メソッドの"scope"パラメータを参照してください。

戻り値
IClient

関連項目

getClientByUserID()メソッド 
public function getClientByUserID(userID:String, scope:String = null):IClient

バージョン : Reactor 1.0.0

userIDによって指定されるアカウントにログインしたクライアントを返します。 もし指定したuserIDを使ってログインしているクライアントを把握していない場合、nullを返します。

パラメータ

userID:String — ユーザーアカウントのユーザーIDです。
 
scope:String (default = null) — 完全修飾ルームID(たとえば、"examples.chatRoom")です。 詳細については、ClientManagerのgetClient()メソッドの"scope"パラメータを参照してください。

戻り値
IClient

関連項目

getClients()メソッド 
public function getClients():Array

現クライアントが把握している全てのクライアントオブジェクトのリストを返します。 リスト内の各クライアントオブジェクトはnet.user1.reactor.Clientかカスタムクライアントクラスのどちらかのインスタンスであり、次のように決定されます:

戻り値
Array

関連項目

getDefaultClientClass()メソッド 
public function getDefaultClientClass():Class

バージョン : Reactor 1.0.0

このアプリケーション内のクライアントが使用するグローバルのデフォルトクラスを返します。

戻り値
Class

関連項目

getInternalClient()メソッド 
public function getInternalClient(clientID:String):Client

バージョン : Reactor 1.0.0

指定したクライアントIDの内部のClientオブジェクトを返します。 このメソッドは次の状況でのみ必要とされます。 CustomClientを拡張していないカスタムクライアントクラスを指定したとき、IClientを直接実装してClientインスタンスを構成する必要があります。 そのような構成されたインスタンスを得るために、カスタムクラスはgetInternalClient()を使用する必要があります。 そうでない場合は、クライアントアプリケーションはgetInternalClient()ではなく、getClient()を通してClientオブジェクトを取得するべきです。

パラメータ

clientID:String — サーバーが生成したクライアントIDです。

戻り値
Client

関連項目

getLifetimeNumClientsKnown()メソッド 
public function getLifetimeNumClientsKnown():int

バージョン : Reactor 1.0.0

自分自身を除いて、現クライアントがこれまでに把握したクライアントの合計数を返します。

戻り値
int

関連項目

getNumClients()メソッド 
public function getNumClients():int

バージョン : Reactor 1.0.0

現クライアントを除いてReactorが把握しているクライアント数を返します。 ClientManagerがクライアントを監視しているとき(watchForClients()を参照してください)、getNumClients()は現在Unionサーバーに接続している実際のクライアント数を返します。 ClientManagerがクライアントを監視していないとき、getNumClients()は減クライアントが気づいているクライアント数のみを返します。 例えば、もし現クライアントが他の3クライアントと一つのルームに入室しており、サーバー上の他のクライアントに関して把握していない場合、getNumClients()はたとえサーバー上に4以上のクライアントが接続しているとしても3を返します。

戻り値
int

関連項目

getNumClientsOnServer()メソッド 
public function getNumClientsOnServer():int

バージョン : Reactor 1.0.0

もしClientManagerがクライアントを監視している場合、getNumClientsOnServer()はサーバー上のクライアント数を返します。そうでない場合、getNumClientsOnServer()は0を返します。

戻り値
int

関連項目

hasWatchedClient()メソッド 
public function hasWatchedClient(clientID:String):Boolean

バージョン : Reactor 1.0.0 watchForAccounts()を参照

もし指定のclientIDを持つクライアントが監視中のクライアントリスト内にある場合はtrueを、そうでない場合はfalseを返します。

パラメータ

clientID:String

戻り値
Boolean
isObservingClient()メソッド 
public function isObservingClient(clientID:String):Boolean

バージョン : Reactor 1.0.0

もし指定のclientIDを持つクライアントが現在観察されている場合はtrueを、そうでない場合はfalseを返します。

パラメータ

clientID:String

戻り値
Boolean

関連項目

isWatchingForClients()メソッド 
public function isWatchingForClients():Boolean

バージョン : Reactor 1.0.0

現クライアントが現在クライアントを監視しているかどうかを示します。

戻り値
Boolean

関連項目

observeClient()メソッド 
public function observeClient(clientID:String):void

バージョン : Reactor 1.0.0

現クライアントをclientIDで指定したクライアントのオブザーバーとして登録するようにサーバーに要求します。 この要求の結果はClientManagerによってトリガーされるClientEvent.OBSERVE_RESULTイベントを通して返されます。 もしその要求が成功すると、Reactorは(もしまだ無い場合は)そのクライアントについてのClientオブジェクトを生成し、ClientEvent.OBSERVEイベントがClientManagerによってトリガーされます。 Clientオブジェクトはサーバー側のそのクライアントの状態と同期されるようになります。 その後もし指定したクライアントの状態が変化すると、現クライアントは次の方法で通知を受けます:

クライアントの観察を停止するには、ClientのstopObserving()メソッドを使用してください。

クライアントの観察は、クライアントのマッチメイキングか管理者インターフェースを用いるアプリケーションでよくあるように、クライアントが任意のクライアントリストの状態を常に通知してもらいたいときに使用します。

パラメータ

clientID:String — 観察するクライアントのclientIDです。

関連項目

sendMessage()メソッド 
public function sendMessage(messageName:String, clientIDs:Array = null, filters:IFilter = null, ... rest):void

バージョン : Reactor 1.0.0

Sends a message to a set of specified clientIDs. メッセージを一つのクライアントのみに送信するには、ClientのsendMessage()メソッドを使用してください。

メッセージを受信するには、受信するクライアントはMessageManagerのaddMessageListener()メソッドを通してメッセージリスナーを登録する必要があります。 例えば、

    // "SMILE"と名づけられたメッセージをクライアントIDが 2, 34, および84のクライアントに送信します
    reactor.getClientManager().sendMessage("SMILE", ["2", "34", "84"]);
    
    // 受信するクライアント内のコードで、メッセージを登録します
    connection.getMessageManager().addMessageListener("SMILE",
                                                      smileListener);
    
    // SMILEメッセージを受信したときに呼び出されるメソッドです
    protected function privateMessageListener (fromClient:IClient,
                                               messageText:String):void {
      trace("Smile from client: " + fromClient.getClientID());
    }
    

ルーム内の全てのクライアントにメッセージを送信するには、RoomのsendMessage()メソッドを使用します。

サーバー上の全てのクライアントにメッセージを送信するには、ServerのsendMessage()メソッドを使用します。

パラメータ

messageName:String — 送信するメッセージ名です。
 
clientIDs:Array (default = null) — そのメッセージの受信者クライアントIDの配列です。
 
filters:IFilter (default = null) — メッセージに適用する一つ以上のフィルターを指定します。 フィルターは各クライアントがメッセージを受信するために満たさなければいけない条件を指定します。 たとえば、メッセージを受信するのは属性"team"が"red"に設定されたクライアントだけといった指示ができます。 完全な詳細については、IFilterインターフェースを参照してください。 もしフィルターがnullなら、全ての指定クライアントがメッセージを受信します。
 
... rest — オプションです。引数のストリング値をカンマで区切ったリストとしてこのメッセージに付与します。 これらのメッセージはメッセージの受信を登録している全てのリスナーに渡されることになります。 MessageManagerのaddMessageListener()メソッドを参照してください。

関連項目

setDefaultClientClass()メソッド 
public function setDefaultClientClass(defaultClass:Class):void

バージョン : Reactor 1.0.0

クラスをReactorアプリケーション内の全クライアントのデフォルトクラスとして使用するように割り当てます。

デフォルトでは、全てのクライアントはIClientを実装したClientクラスのインスタンスによって表されます。 しかし、カスタムクラスによってクライアントを表すこともできます。 カスタムクライアントクラスはClientクラスのsetClientClass()メソッドを通して、基本的にクライアントごとに指定できます。 または、RoomクラスのsetDefaultClientClass()メソッドを通してカスタムクライアントクラスをルームごとに指定することができます。 または、ClientManagerクラスのsetDefaultClientClass()メソッドを用いると、カスタムクライアントクラスをグローバルに割り当てられます。 クラスがsetDefaultClientClass()を通じてグローバルに指定されているときは、scope未指定のClientManagerのgetClient()を通して取得されるいずれのクライアントのクライアントクラスにもそれが使用されます。

RoomのsetDefaultClientClass()メソッドを通して指定された全てのカスタムクラスはグローバルのデフォルトクライアントクラスを上書きします。 似たように、ClientのsetClientClass()メソッドを通して指定されたカスタムクラスはいずれもルームとグローバルのデフォルトクライアントクラスをオーバーライドします。

パラメータ

defaultClass:Class — グローバルのデフォルトクライアントクラスです。 クラスは通常はCustomClientの派生ですが、IClientインターフェイスを実装したどんなクラスでも使えます。

関連項目

stopWatchingForClients()メソッド 
public function stopWatchingForClients():void

バージョン : Reactor 1.0.0

クライアントの監視を停止するようにサーバーに要求します。 応答として、サーバーはクライアントが接続または切断するときにもう通知を送信しません。

stopWatchingForClients()要求の結果はClientManagerEvent.STOP_WATCHING_FOR_CLIENTS_RESULTを通して返されます。

関連項目

watchForClients()メソッド 
public function watchForClients():void

バージョン : Reactor 1.0.0

現在サーバーに接続中のクライアントのリストを送信し、その後クライアントが接続か切断したときにはいつでも通知を送信するようにサーバーに要求します。 クライアントリストが準備できると、ClientManagerはClientManagerEvent.SYNCHRONIZEイベントを送出します。 その後のクライアントの接続はClientManagerEvent.CLIENT_CONNECTEDイベントをトリガーします。 その後の切断はClientManagerEvent.CLIENT_DISCONNECTEDイベントをトリガーします。

watchForClients()要求の結果はClientManagerEvent.WATCH_FOR_CLIENTS_RESULTを通して返されます。

関連項目

イベントの詳細
CLIENT_CONNECTED イベント
Event Object Type: ClientManagerEvent
ClientManagerEvent.type variable = net.user1.reactor.ClientManagerEvent.CLIENT_CONNECTED

ClientManagerがUnionサーバーからクライアントの接続を通知されたときに送出されます。 このイベントはClientManagerがクライアントを監視しているときにのみ利用可能です(watchForClients()を参照してください)。

関連項目

CLIENT_DISCONNECTED イベント  
Event Object Type: ClientManagerEvent
ClientManagerEvent.type variable = net.user1.reactor.ClientManagerEvent.CLIENT_DISCONNECTED

ClientManagerがUnionサーバーからクライアントの切断を通知されたときに送出されます。 このイベントはClientManagerがクライアントを監視している(watchForClients()を参照)か、切断したクライアントを観察しているとき(observeClient()を参照)にのみ利用可能です。

関連項目

OBSERVE イベント  
Event Object Type: ClientEvent
ClientEvent.type variable = net.user1.reactor.ClientEvent.OBSERVE

現クライアントがクライアントを観察するときに送出されます。 観察されるようになったクライアントにはClientEventのgetClient()メソッドを通してアクセスできます。

関連項目

OBSERVE_RESULT イベント  
Event Object Type: ClientEvent
ClientEvent.type variable = net.user1.reactor.ClientEvent.OBSERVE_RESULT

先に行われたClient.observe()かClientManager.observeClient()要求の結果を受信したときに送出されます。

関連項目

STOP_OBSERVING イベント  
Event Object Type: ClientEvent
ClientEvent.type variable = net.user1.reactor.ClientEvent.STOP_OBSERVING

現クライアントがクライアントの観察を停止するときに送出されます。 もはや観察されていないクライアントにはClientEventのgetClient()メソッドを通してアクセスできます。

関連項目

STOP_OBSERVING_RESULT イベント  
Event Object Type: ClientEvent
ClientEvent.type variable = net.user1.reactor.ClientEvent.STOP_OBSERVING_RESULT

先に行われたClient.stopObserving()かClientManager.stopObservingClient()要求の結果を受信したときに送出されます。

関連項目

STOP_WATCHING_FOR_CLIENTS_RESULT イベント  
Event Object Type: ClientManagerEvent
ClientManagerEvent.type variable = net.user1.reactor.ClientManagerEvent.STOP_WATCHING_FOR_CLIENTS_RESULT

ClientManagerが先に行われたstopWatchingForClients()要求の結果を受信するときに送出されます。 試行結果を診断するには、getStatus()を使用します。これは次の値をとる可能性があります。

関連項目

SYNCHRONIZE イベント  
Event Object Type: ClientEvent
ClientEvent.type variable = net.user1.reactor.ClientManagerEvent.SYNCHRONIZE

watchForClients()要求の後にClientManagerのクライアントリストの同期が完了するときに送出されます。

関連項目

WATCH_FOR_CLIENTS_RESULT イベント  
Event Object Type: ClientManagerEvent
ClientManagerEvent.type variable = net.user1.reactor.ClientManagerEvent.WATCH_FOR_CLIENTS_RESULT

ClientManagerが先に行われたwatchForClients()要求の結果を受信するときに送出されます。 要求の結果を究明するためには、getStatus()を使用してください。これは次の戻り値のうちどれかになります:

関連項目