| パッケージ | net.user1.reactor |
| クラス | public class ClientManager |
| 継承 | ClientManager flash.events.EventDispatcher |
| バージョン : | Reactor 1.0.0 |
ClientManagerクラスはUnionサーバーに接続しているクライアントを表すClientインスタンスへの中央管理的なアクセスを提供します。 現クライアントに把握されている(例えば、現クライアントと同じルームに入室しているクライアント)いずれのクライアントもClientManagerのgetClient()メソッドを通してアクセスできます。 例えば、
reactor.getClientManager().getClient(someClientID);
現クライアントのサーバー上のクライアントリストとサーバーの状態との同期を保つには、watchForClients()メソッドを次のように使用してください:
reactor.getClientManager().watchForClients();
ClientManagerを使用してクライアントオブジェクトに使用するデフォルトのカスタムクラスを指定することもできます。 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 | ||
指定のクライアントを表すオブジェクトを返します。 デフォルトでは、そのオブジェクトは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 | ||
getDefaultClientClass():Class このアプリケーション内のクライアントが使用するグローバルのデフォルトクラスを返します。 | ClientManager | ||
getInternalClient(clientID:String):Client 指定したクライアントIDの内部のClientオブジェクトを返します。 | ClientManager | ||
自分自身を除いて、現クライアントがこれまでに把握したクライアントの合計数を返します。 | ClientManager | ||
getNumClients():int 現クライアントを除いてReactorが把握しているクライアント数を返します。 | ClientManager | ||
getNumClientsOnServer():int もしClientManagerがクライアントを監視している場合、getNumClientsOnServer()はサーバー上のクライアント数を返します。そうでない場合、getNumClientsOnServer()は0を返します。 | ClientManager | ||
hasWatchedClient(clientID:String):Boolean もし指定のclientIDを持つクライアントが監視中のクライアントリスト内にある場合はtrueを、そうでない場合はfalseを返します。 | ClientManager | ||
isObservingClient(clientID:String):Boolean もし指定のclientIDを持つクライアントが現在観察されている場合はtrueを、そうでない場合はfalseを返します。 | ClientManager | ||
isWatchingForClients():Boolean 現クライアントが現在クライアントを監視しているかどうかを示します。 | 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 | ||
stopWatchingForClients():void クライアントの監視を停止するようにサーバーに要求します。 | ClientManager | ||
watchForClients():void 現在サーバーに接続中のクライアントのリストを送信し、その後クライアントが接続か切断したときにはいつでも通知を送信するようにサーバーに要求します。 | ClientManager | ||
| 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 |
関連項目
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 | イベント |
ClientManagerEventnet.user1.reactor.ClientManagerEvent.CLIENT_CONNECTED
ClientManagerがUnionサーバーからクライアントの接続を通知されたときに送出されます。 このイベントはClientManagerがクライアントを監視しているときにのみ利用可能です(watchForClients()を参照してください)。
関連項目
| CLIENT_DISCONNECTED | イベント |
ClientManagerEventnet.user1.reactor.ClientManagerEvent.CLIENT_DISCONNECTED
ClientManagerがUnionサーバーからクライアントの切断を通知されたときに送出されます。 このイベントはClientManagerがクライアントを監視している(watchForClients()を参照)か、切断したクライアントを観察しているとき(observeClient()を参照)にのみ利用可能です。
関連項目
| OBSERVE | イベント |
ClientEventnet.user1.reactor.ClientEvent.OBSERVE現クライアントがクライアントを観察するときに送出されます。 観察されるようになったクライアントにはClientEventのgetClient()メソッドを通してアクセスできます。
関連項目
| OBSERVE_RESULT | イベント |
ClientEventnet.user1.reactor.ClientEvent.OBSERVE_RESULT先に行われたClient.observe()かClientManager.observeClient()要求の結果を受信したときに送出されます。
関連項目
| STOP_OBSERVING | イベント |
ClientEventnet.user1.reactor.ClientEvent.STOP_OBSERVING現クライアントがクライアントの観察を停止するときに送出されます。 もはや観察されていないクライアントにはClientEventのgetClient()メソッドを通してアクセスできます。
関連項目
| STOP_OBSERVING_RESULT | イベント |
ClientEventnet.user1.reactor.ClientEvent.STOP_OBSERVING_RESULT先に行われたClient.stopObserving()かClientManager.stopObservingClient()要求の結果を受信したときに送出されます。
関連項目
| STOP_WATCHING_FOR_CLIENTS_RESULT | イベント |
ClientManagerEventnet.user1.reactor.ClientManagerEvent.STOP_WATCHING_FOR_CLIENTS_RESULT
ClientManagerが先に行われたstopWatchingForClients()要求の結果を受信するときに送出されます。 試行結果を診断するには、getStatus()を使用します。これは次の値をとる可能性があります。
関連項目
| SYNCHRONIZE | イベント |
ClientEventnet.user1.reactor.ClientManagerEvent.SYNCHRONIZEwatchForClients()要求の後にClientManagerのクライアントリストの同期が完了するときに送出されます。
関連項目
| WATCH_FOR_CLIENTS_RESULT | イベント |
ClientManagerEventnet.user1.reactor.ClientManagerEvent.WATCH_FOR_CLIENTS_RESULT
ClientManagerが先に行われたwatchForClients()要求の結果を受信するときに送出されます。 要求の結果を究明するためには、getStatus()を使用してください。これは次の戻り値のうちどれかになります:
関連項目