| パッケージ | net.user1.reactor |
| クラス | public class Room |
| 継承 | Room flash.events.EventDispatcher |
| バージョン : | Reactor 1.0.0 |
Roomクラスはクライアントがグループコミュニケーションを行う場となるUnionのルームを表します。 クライアントがルームにメッセージを送信するとき、概念的にルームの"中にいる"他の全てのクライアント(ルームの"入室者"とされます)がそのメッセージを受信します。 例えば、次のコードを使用することで、Reactorのクライアントは与えられたルームの全入室者に"CHAT"と名付けたメッセージを送信することができました:
theRoom.sendMessage("CHAT", true, "Union is fun!");
先のコード内で、theRoomはRoomオブジェクトへの参照、"CHAT"はメッセージ名、trueは"もしルーム内に送信者がいればメッセージをエコー"し、"Union is fun!"はこのメッセージの第一かつ唯一の引数です。
クライアントはRoomクラスのjoin()メソッドかRoomManagerクラスのjoinRoom()メソッドを通して、次のようにルームに入室できます:
// roomIDが"examples.chat"のルームへ入室
reactor.getRoomManager().joinRoom("examples.chat");
// theRoomによって参照されるルームへ入室
theRoom.join();
クライアントは同時に2つ以上のルームに入室できます。 例えば、一つのクライアントがあるルームでゲームをしながら、他のルームでチャットをし、さらに他のルームのマネージャーミーティングで従業員の給料をレビューすることもできます。
クライアントはRoomのleave()メソッドを通してルームから退室します。 (クライアントアプリケーションは既に入室したルームへの参照を常に取得することができるため(それで常にRoomのleave()メソッドを使用できるために)、RoomManagerクラスは個別のleaveRoom()メソッドは定義しません。 現クライアントがルームに入室するとき、そのルームはRoomEvent.JOINイベントを送出します。 現クライアントがルームから退室するとき、そのルームはRoomEvent.LEAVEイベントを送出します。
デフォルトでは、現クライアントがルームに入室していて他のクライアントがそのルームに入室か退室したとき、そのルームはRoomEvent.ADD_OCCUPANTおよびRoomEvent.REMOVE_OCCUPANTイベントを送出します。 例えば、次のコードはクライアントがルームに入室するたびにデバッグメッセージを表示します:
theRoom.addEventListener(RoomEvent.ADD_OCCUPANT, addOccupantListener);
public function addOccupantListener (e:RoomEvent):void {
trace("クライアントがルームに入室しました。 クライアントIDは: "
+ e.getClient().getClientID());
}
クライアントが他のクライアントがルームへ入退場するときの通知を受けたくない場合は、RoomクラスのsetUpdateLevels()メソッドを使用して通知をうけない選択もできます。
デフォルトでは、クライアントは未入室のルームに送信されたメッセージは受信しません。 しかしながら、クライアントはRoomManagerのobserveRoom()メソッドかRoomのobserve()メソッドを通して"観戦"を要求することで、ルーム内の活動を観戦することができます。 ルームを観戦中のクライアントは入室者同様の全ての更新を受け取りますが、入室者リスト中には現れません。 観戦機能はユーザーがチェスの試合を観戦したり、セレブのチャットを傍聴したりといった機能付きのアプリケーションを作成するためにしばしば使用されます。
Reactorの特定のルームインスタンスは、それぞれがUnionサーバーの実際のサーバー側のJavaのRoomオブジェクトを反映します。 クライアントがルームに入室または観戦するとき、Unionサーバーは自動的にそのクライアントにそのルーム状態の概要を送信し、続いてルーム状態が変わるときには更新をクライアントにプッシュします。 Unionサーバーから各クライアントにプッシュされる情報量はそのクライアントの"ルーム更新レベル"設定によって決定されます。この設定はRoomクラスのjoin()、observe()、そしてsetUpdateLevels()メソッドを通してセットできます。
ルームはルーム属性を使用して情報を格納できます。これは共有可能なマルチユーザー変数で、ルーム内の入室者と観戦者の誰もがアクセス可能です。 ルーム属性を生成したり、それに新しい値を割り当てたりするには、RoomクラスのsetAttribute()メソッドを使用します。 デフォルトの場合、共有ルーム属性の値が変わるとき、全てのクライアントがAttributeEvent.UPDATEイベントを通して通知されます。 しかし、ルーム属性の変更を通知されたくないクライアントは、RoomクラスのsetUpdateLevels()メソッドを使用して通知を止めることができます。
新しいサーバー側のルームをActionScriptで作成するには、RoomManagerクラスのcreateRoom()メソッドを使用してください。 サーバー側のルームをActionScriptで除去するには、RoomManagerクラスのremoveRoom()メソッドを使用してください。 サーバーからルームが除去されたとき、全てのクライアントは強制的に退室させられます。 その結果、RoomEvent.LEAVEイベントが発生します。
Reactorでは、ルームはデフォルトではRoomオブジェクトによって表現されますが、アプリケーションは自作のRoomサブクラスを個別のルームに指定することができ、それらのクラス内でアプリケーションロジックを実装できます。 たとえば、Roomのサブクラスはチャットメッセージを制御するチャットルームを表すことができます。 または、独自のゲームを実装したゲームルームにもなりえるでしょう。 そのクラスを特定のルームに割り当てるには、RoomClassRegistryのsetRoomClass()メソッドを使用してください。 例えば、次のコードはChessRoomクラスをroomID "games.chess" のルームのクラスとして割り当てます:
var registry:RoomClassRegistry = reactor.getRoomManager().getRoomClassRegistry();
registry.setRoomClass("games.chess", ChessRoom);
関連項目
| メソッド | 定義元 | ||
|---|---|---|---|
Room(id:String, roomManager:RoomManager, messageManager:MessageManager, clientManager:ClientManager, accountManager:AccountManager, log:Logger) Roomインスタンスを初期化します。 | Room | ||
addMessageListener(message:String, listener:Function):void 指定の種類のメッセージがルームに送信されたときに通知を受けるリスナーを登録します。 | Room | ||
clientIsInRoom(clientID:String = null):Boolean もし指定したクライアントがこのルームに入室していればtrueを、そうでない場合はfalseを返します。 | Room | ||
clientIsObservingRoom(clientID:String = null):Boolean もし指定したクライアントがこのルームを観戦していればtrueを、そうでない場合はfalseを返します。 | Room | ||
deleteAttribute(attrName:String):void 指定したルーム属性をサーバーから削除します。 | Room | ||
getAttribute(attrName:String):String 指定したルーム属性の現在のローカル値を返します。 | Room | ||
getAttributes():Object このルームが共有している属性の名称と値を表すプロパティを持つオブジェクトを返します。 | Room | ||
指定のIDをもつ入室者あるいは観戦者を返します。 | Room | ||
getDefaultClientClass():Class このルームのデフォルトクラスとして使われるクラスを返します。 | Room | ||
getNumObservers():int この呼び出し時にこのルームを観戦していることがわかっているクライアント数を返します。 | Room | ||
getNumOccupants():int 呼び出された時点でルームにいるとわかっているクライアント数を返します。 | Room | ||
getObserverIDs():Array 現在このルームを観戦している全てのクライアントのIDを配列として返します。 | Room | ||
getObservers():Array 現在このルームを観戦している全てのクライアントを表すオブジェクトの配列を返します。 | Room | ||
getOccupantIDs():Array 現在このルームにいる全クライアントのIDを配列で返します。 | Room | ||
getOccupants():Array 現在ルーム内にいるクライアントを表現する全てのオブジェクトの配列を返します。 | Room | ||
getQualifier():String ルームIDの修飾子部分を返します。 | Room | ||
getRoomID():String このルームの完全修飾IDを返します。 | Room | ||
このルームの設定を記述する RoomSettings オブジェクトを返します。これには最大入室者数と、最後の入室者が退室したときにルームが自動的に除去されるかどうかの設定が含まれます。 | Room | ||
getSimpleRoomID():String このルームの単純IDを返します。 | Room | ||
getSyncState():String このルームの現在の同期状態を示すストリング値を返します。 | Room | ||
hasMessageListener(message:String, listener:Function):Boolean このルームにおける指定のメッセージについて、指定のリスナー関数がメッセージ通知を受信するように現在登録されているかどうかを示すBoolean値を返します。 | Room | ||
join(password:String = null, updateLevels:UpdateLevels = null):void このRoomオブジェクトによって表されるサーバー側のルームに現クライアントを配置するようにサーバーに要求します。 | Room | ||
leave():void このRoomオブジェクトによって表されるサーバー側のルームから現クライアントを除去するようにサーバーに要求します。 | Room | ||
observe(password:String = null, updateLevels:UpdateLevels = null):void このルームの観察開始をサーバーに要求します。 | Room | ||
remove(password:String = null):void このルームの除去をサーバーに要求します。 | Room | ||
removeMessageListener(message:String, listener:Function):void addMessageListener()によって先に登録されたメッセージリスナーを登録解除します。 | Room | ||
sendMessage(messageName:String, includeSelf:Boolean = false, filters:IFilter = null, ... rest):void このルームに入室または観戦しているクライアントにメッセージを送信します。 | Room | ||
sendModuleMessage(messageName:String, messageArguments:Object = null):void 指定したメッセージをこのルームのサーバーサイドのモジュールに送信します。 | Room | ||
setAttribute(attrName:String, attrValue:String, isShared:Boolean = true, isPersistent:Boolean = false, evaluate:Boolean = false):void このルームの属性設定をサーバーに要求します。 | Room | ||
setDefaultClientClass(defaultClass:Class):void クラスをルームのクライアントに使用されるデフォルトクラスとして割り当てます。 | Room | ||
setRoomSettings(settings:RoomSettings):void ルームに新たな設定を割り当てます。 | Room | ||
setUpdateLevels(updateLevels:UpdateLevels):void 現クライアントがこのルームに入室あるいは観戦している間に、このルームについてサーバーから受信する情報量を指定します。 | Room | ||
stopObserving():void このルームの観察停止をサーバーに要求します。 | Room | ||
toString():String [オーバーライド] このオブジェクトのString表現を提供します。 | Room | ||
| Event | Summary | 定義元 | ||
|---|---|---|---|---|
| クライアントがルームの観戦を開始し、次の二つの条件を満たすときに送出されます: 1) 現クライアントがそのルームに入室か観戦している、2) 現クライアントがそのルームの "観戦者リスト" 更新を有効にしている (観戦者リスト更新はデフォルトでは無効です)。 | Room | |||
| クライアントがルームに入室し、次の二つの条件を満たすときに送出されます: 1) 現クライアントがそのルームに入室か観戦している、2) 現クライアントがそのルームの "入室者リスト" 更新を有効にしている (入室者リスト更新はデフォルトで有効です)。 | Room | |||
| 属性が削除されるときに送出されます。 | Room | |||
| 現クライアントがルームに入室しているか観戦していて、現クライアントが関心を持っている属性がそのルーム内の入室者か観戦者のいずれかによって除去されたときに送出されます。 | Room | |||
| 属性の削除試行の結果を受信したときに送出されます。 | Room | |||
| サーバー側のコードか、先にルームへの入室要求を行った結果として、現クライアントがルームへの入室に成功したときに送出されます。 | Room | |||
| 先に行われたルーム入室要求の結果を取得したときに送出されます。 | Room | |||
| サーバー側のコードか、先にルームからの退室要求を行った結果として、現クライアントがルームからの退室に成功したときに送出されます。 | Room | |||
| 先に行われたルーム退室要求の結果を取得したときに送出されます。 | Room | |||
| サーバー側のコードか、先にルームの観察要求を行った結果として、現クライアントがルームの観察に成功したときに送出されます。 | Room | |||
| 先に行われたルーム観察要求の結果を取得したときに送出されます。 | Room | |||
| 現クライアントが入室しているか観戦しているルームの入室者数が変化し、現クライアントがそのルームについて"入室者リスト"更新か"入室者カウント"更新を有効にしているときに送出されます(入室者リスト更新はデフォルトで有効になっています)。 | Room | |||
| 現クライアントが入室しているか観戦しているルームの観戦者数が変化し、現クライアントがそのルームについて"観戦者リスト"更新か"観戦者カウント"更新を有効にしているときに送出されます(どちらもデフォルトでは無効になっています)。 | Room | |||
| クライアントがルームの観戦を停止し、次の二つの条件を満たすときに送出されます: 1) 現クライアントがそのルームに入室か観戦している、2) 現クライアントがそのルームの "観戦者リスト" 更新を有効にしている (観戦者リスト更新はデフォルトでは無効です)。 | Room | |||
| クライアントがルームから退室し、次の二つの条件を満たすときに送出されます: 1) 現クライアントがそのルームに入室か観戦している、2) 現クライアントがそのルームの "入室者リスト" 更新を有効にしている (入室者リスト更新はデフォルトで有効です)。 | Room | |||
| それまで現クライアントによって把握されていたルームが把握できなくなったときに送出されます。 | Room | |||
| 属性のセット試行の結果を受信したときに送出されます。 | Room | |||
| サーバー側のコードか、先にルームの観察停止要求を行った結果として、現クライアントがルームの観察停止に成功したときに送出されます。 | Room | |||
| 先に行われた観察停止要求の結果を取得したときに送出されます。 | Room | |||
| ルームがサーバーの状態と同期したときに送出されます。 | Room | |||
| 属性が変化するか最初にセットされるときに送出されます。 | Room | |||
| 現クライアントがルームに入室しているか観戦していて、現クライアントが関心を持っている属性がそのルーム内の入室者か観戦者のいずれかにおいて変更されたときに送出されます。 | Room | |||
| Room | () | コンストラクタ |
public function Room(id:String, roomManager:RoomManager, messageManager:MessageManager, clientManager:ClientManager, accountManager:AccountManager, log:Logger)| バージョン : | Reactor 1.0.0 |
Roomインスタンスを初期化します。
パラメータid:String | |
roomManager:RoomManager | |
messageManager:MessageManager | |
clientManager:ClientManager | |
accountManager:AccountManager | |
log:Logger |
| addMessageListener | () | メソッド |
public function addMessageListener(message:String, listener:Function):void| バージョン : | Reactor 1.0.0 |
指定の種類のメッセージがルームに送信されたときに通知を受けるリスナーを登録します。 RoomメッセージはRoomのsendMessage()メソッドかRoomManagerのsendMessage()メソッドかサーバー側モジュールを通して送信され得ます。 しかしながら、与えられたルームにおけるメッセージリスナーはそのルームのメッセージの無視を選択したクライアントにおいてはトリガーされない点に留意してください。 setUpdateLevels()を参照してください。
RoomのaddMessageListener()メソッドより低水準な代替については、MessageManagerのaddMessageListener()メソッドを参照してください。これはより多くのリスニングオプションを持ちますが、より複雑なAPIでもあります。
パラメータ
message:String — "CHAT"や"PROJECTILE_FIRED"のようなメッセージ名です。 この名前のメッセージを受信したとき、指定のリスナーが実行されます。 | |
listener:Function — 指定のメッセージを受信するときに実行される関数です。 リスナーの最初のパラメータのデータ型はIClientである必要があります。 次に続くパラメータはそのメッセージの(sendMessage()を通して送信される)引数を受け取ります。 |
関連項目
theRoom.addMessageListener("CHAT", chatMessageListener);
protected function chatMessageListener (fromClient:IClient,
messageText:String):void {
// 画面にメッセージを表示するコードをここに書きましょう
}
theRoom.sendMessage("CHAT", true, null, messageText);| clientIsInRoom | () | メソッド |
public function clientIsInRoom(clientID:String = null):Boolean| バージョン : | Reactor 1.0.0 |
もし指定したクライアントがこのルームに入室していればtrueを、そうでない場合はfalseを返します。
パラメータ
clientID:String (default = null) — 確認するclientIDです。 現クライアントに対してはnullを使用してください(nullはreactor.self().getClientID()の便利な代替手段です)。 |
Boolean |
| clientIsObservingRoom | () | メソッド |
public function clientIsObservingRoom(clientID:String = null):Boolean| バージョン : | Reactor 1.0.0 |
もし指定したクライアントがこのルームを観戦していればtrueを、そうでない場合はfalseを返します。
パラメータ
clientID:String (default = null) — 確認するclientIDです。 現クライアントに対してはnullを使用してください(nullはreactor.self().getClientID()の便利な代替手段です)。 |
Boolean |
関連項目
| deleteAttribute | () | メソッド |
public function deleteAttribute(attrName:String):void| バージョン : | Reactor 1.0.0 |
指定したルーム属性をサーバーから削除します。 ルーム属性が削除されるとき、そのルームに入室あるいは観戦していて十分な更新レベルを持つ全てのクライアント上でAttributeEvent.DELETEイベントがトリガーされます。 ルーム属性がサーバー上に見つからなかった場合、どのクライアントにも更新の送信はされません。 実在しない属性の削除試行は、その試行を行ったクライアント上でAttributeEvent.DELETE_RESULTをトリガーします。
パラメータ
attrName:String — 削除する属性名です。 &, ", ', <, >, または Tokens.RS を含んではいけません。 |
関連項目
| getAttribute | () | メソッド |
public function getAttribute(attrName:String):String| バージョン : | Reactor 1.0.0 |
指定したルーム属性の現在のローカル値を返します。 ローカル値はそのクライアント上に存在した最近の値ですが、ネットワークのタイミング次第で、実際のサーバーには別の値が存在することがあります。 getAttribute()メソッドはクライアント上に存在しないか、存在していたが削除された属性全てにnullを返します。
パラメータ
attrName:String — 値を読み出す属性の名称です。 &, ", ', <, >, または Tokens.RS を含んではいけません。 |
String — 属性のストリング値です。もし属性が存在しないか削除済みの場合はnullです。 |
関連項目
| getAttributes | () | メソッド |
public function getAttributes():Object| バージョン : | Reactor 1.0.0 |
このルームが共有している属性の名称と値を表すプロパティを持つオブジェクトを返します。 このオブジェクトは現在の属性のコピーであり、getAttributes()呼出し語に発生した変更はこのオブジェクトには反映されません。 getAttributes()によって返されたオブジェクトのプロパティを読み取るには、for-inループを使用します。 たとえば、次のコードはルームの属性をデバッグコンソールに書き出します。
var roomAttrs:Object = room.getAttributes();
for (var attrName:String in roomAttrs) {
trace("Attribute: " + attrName + " has the value: " + roomAttrs[attrVal]);
}Object |
関連項目
| getClient | () | メソッド |
public function getClient(id:String):IClient指定のIDをもつ入室者あるいは観戦者を返します。 戻り値のクライアントはビルトインのClientクラスか、自作のクライアントクラスのどちらかのインスタンスになります。 自作クライアントクラスについての情報は、ClientクラスのsetClientClass()メソッド、RoomのsetDefaultClientClass()メソッド、およびClientManagerのsetDefaultClientClass()メソッドを参照してください。
パラメータ
id:String |
IClient |
関連項目
| getDefaultClientClass | () | メソッド |
public function getDefaultClientClass():Class| バージョン : | Reactor 1.0.0 |
このルームのデフォルトクラスとして使われるクラスを返します。
戻り値Class |
関連項目
| getNumObservers | () | メソッド |
public function getNumObservers():int| バージョン : | Reactor 1.0.0 |
この呼び出し時にこのルームを観戦していることがわかっているクライアント数を返します。 もしこのルームについての現クライアントの更新レベルが"観戦者リスト"と"観戦者数"のどちらも含まない場合、観戦者数は不明であり、getNumObservers()は0を返します。
戻り値int |
| getNumOccupants | () | メソッド |
public function getNumOccupants():int| バージョン : | Reactor 1.0.0 |
呼び出された時点でルームにいるとわかっているクライアント数を返します。 もしこのルームについての現クライアントの更新レベルが"入室者リスト"と"入室者数"のどちらも含まない場合、入室者数は不明であり、getNumOccupants()は0を返します。
戻り値int |
| getObserverIDs | () | メソッド |
public function getObserverIDs():Array| バージョン : | Reactor 1.0.0 |
現在このルームを観戦している全てのクライアントのIDを配列として返します。 配列はルームを観戦しているクライアントリストの一時的なコピーであり、実際の観戦者リスト(クライアントがルームの観戦の開始や停止を続けることで変わります)には同期しません。
戻り値Array |
関連項目
| getObservers | () | メソッド |
public function getObservers():Array| バージョン : | Reactor 1.0.0 |
現在このルームを観戦している全てのクライアントを表すオブジェクトの配列を返します。 配列はルームを観戦しているクライアントの一時的なコピーであり、実際の観戦者リスト(クライアントがルームの観戦の開始や停止を続けることで変わります)には同期しません。
戻り値Array |
関連項目
| getOccupantIDs | () | メソッド |
public function getOccupantIDs():Array| バージョン : | Reactor 1.0.0 |
現在このルームにいる全クライアントのIDを配列で返します。 配列はルーム内のクライアントリストの一時的なコピーであり、実際の入室者リスト(クライアントがそのルームへの入室や退室を続けることで変わります)には同期しません。
戻り値Array |
関連項目
| getOccupants | () | メソッド |
public function getOccupants():Array| バージョン : | Reactor 1.0.0 |
現在ルーム内にいるクライアントを表現する全てのオブジェクトの配列を返します。 配列はルーム内のクライアントの一時的なスナップショットであり、実際の入室者リスト(クライアントがそのルームへの入室や退室を続けることで変わります)には同期しません。
戻り値Array |
関連項目
| getQualifier | () | メソッド |
public function getQualifier():String| バージョン : | Reactor 1.0.0 |
ルームIDの修飾子部分を返します。 たとえば、ルームの完全修飾が"examples.chat"ならば、このメソッドは"examples"を返します。
戻り値String |
関連項目
| getRoomID | () | メソッド |
public function getRoomID():String| バージョン : | Reactor 1.0.0 |
このルームの完全修飾IDを返します。 たとえば、"examples.chat"です。
戻り値String |
| getRoomSettings | () | メソッド |
public function getRoomSettings():RoomSettings| バージョン : | Reactor 1.0.0 |
このルームの設定を記述する RoomSettings オブジェクトを返します。これには最大入室者数と、最後の入室者が退室したときにルームが自動的に除去されるかどうかの設定が含まれます。 返されるオブジェクトは一時的なスナップショットであり、getRoomSettings() の呼び出し後には更新されません。
戻り値RoomSettings |
関連項目
| getSimpleRoomID | () | メソッド |
public function getSimpleRoomID():String| バージョン : | Reactor 1.0.0 |
このルームの単純IDを返します。 たとえば、ルームの完全修飾が"examples.chat"ならば、このメソッドは"chat"を返します。
戻り値String |
関連項目
| getSyncState | () | メソッド |
public function getSyncState():String| バージョン : | Reactor 1.0.0 |
このルームの現在の同期状態を示すストリング値を返します。 詳細はSynchronizationStateクラスを参照してください。
戻り値String |
関連項目
| hasMessageListener | () | メソッド |
public function hasMessageListener(message:String, listener:Function):Boolean| バージョン : | Reactor 1.0.0 |
このルームにおける指定のメッセージについて、指定のリスナー関数がメッセージ通知を受信するように現在登録されているかどうかを示すBoolean値を返します。
パラメータ
message:String — UnionメッセージのストリングIDです。 | |
listener:Function — 関数かメソッドです。 |
Boolean |
関連項目
| join | () | メソッド |
public function join(password:String = null, updateLevels:UpdateLevels = null):void| バージョン : | Reactor 1.0.0 |
このRoomオブジェクトによって表されるサーバー側のルームに現クライアントを配置するようにサーバーに要求します。 その試行結果を受信したとき、そのルームはRoomEvent.JOIN_RESULTイベントをトリガーします。 もしその試行が成功すると、そのルームはRoomEvent.JOINイベントをトリガーします。 いったんクライアントがルームに入室すると、そのルームについての現クライアントの更新レベルに対応してサーバー側のルームの状態と同期が保たれます(RoomクラスのsetupdateLevels()メソッドを参照してください)。 サーバーからの更新はRoomEvent.ADD_OCCUPANTやAttributeEvent.UPDATEといった個別のルームイベントをトリガーします。
パラメータ
password:String (default = null) — オプションとしてルームへの入室に必要なパスワードです。 | |
updateLevels:UpdateLevels (default = null) — このルームについてそのクライアントの更新レベルを指定します。更新レベルはこのルームに入室あるいは観戦している間に、このルームについてサーバーから受信する情報量を記述します。 詳細はUpdateLevelsクラスを参照してください。 |
関連項目
var room:Room = reactor.getRoomManager().createRoom("lobby");
room.join();
| leave | () | メソッド |
public function leave():void| バージョン : | Reactor 1.0.0 |
このRoomオブジェクトによって表されるサーバー側のルームから現クライアントを除去するようにサーバーに要求します。 その試行結果を受信したとき、そのルームはRoomEvent.LEAVE_RESULTイベントをトリガーします。 もしその要求が成功すると、そのルームはRoomEvent.LEAVEイベントをトリガーします。
関連項目
| observe | () | メソッド |
public function observe(password:String = null, updateLevels:UpdateLevels = null):void| バージョン : | Reactor 1.0.0 |
このルームの観察開始をサーバーに要求します。 このメソッドはRoomManagerのobserveRoom()メソッドにそのまま渡されます。 詳細はobserveRoom()メソッドを参照してください。
パラメータ
password:String (default = null) — このルームについてそのクライアントの更新レベルを指定します。更新レベルはこのルームに入室あるいは観戦している間に、このルームについてサーバーから受信する情報量を記述します。 詳細はUpdateLevelsクラスを参照してください。 | |
updateLevels:UpdateLevels (default = null) |
関連項目
| remove | () | メソッド |
public function remove(password:String = null):void| バージョン : | Reactor 1.0.0 |
このルームの除去をサーバーに要求します。 このメソッドはその処理をRoomManager.removeRoom()に引き渡します。 完全な詳細はRoomManager.removeRoom()メソッドを参照してください。
パラメータ
password:String (default = null) |
関連項目
| removeMessageListener | () | メソッド |
public function removeMessageListener(message:String, listener:Function):void| バージョン : | Reactor 1.0.0 |
addMessageListener()によって先に登録されたメッセージリスナーを登録解除します。
パラメータ
message:String | |
listener:Function |
関連項目
| sendMessage | () | メソッド |
public function sendMessage(messageName:String, includeSelf:Boolean = false, filters:IFilter = null, ... rest):void| バージョン : | Reactor 1.0.0 |
このルームに入室または観戦しているクライアントにメッセージを送信します。 複数のルーム内のクライアントにメッセージを送信するには、RoomManagerクラスのsendMessage()メソッドを使用します。 サーバー上の全てのクライアントにメッセージを送信するには、ServerクラスのsendMessage()メソッドを使用します。
メッセージを受信するには、受信クライアントは通常はRoomクラスのaddMessageListener()メソッドを通してメッセージリスナーを登録します。 しかし、MessageManagerのaddMessageListener()メソッドを通して登録したリスナーからメッセージを受信することもできます。 someRoom.addMessageListener()を通して登録されたメッセージリスナーは、特定のメッセージがsomeRoomに送信されたときのみトリガされます。通常はこれが望ましい挙動です。 MessageManagerのaddMessageListener()メソッドを通して登録されたメッセージリスナーは指定したメッセージが任意のルームに送信されたときにトリガーされます。 MessageManagerのaddMessageListener()メソッドとRoomのaddMessageListener()間の差異の完全な説明については、MessageManagerのaddMessageListener()メソッドのエントリーを参照してください。
クライアントがルームのメッセージを受信したくない場合は、RoomクラスのsetUpdateLevels()メソッドを使用してメッセージを受けない選択もできます。
パラメータ
messageName:String — 送信するメッセージ名です。 | |
includeSelf:Boolean (default = false) — 現クライアント(つまり、sendMessage()を起動したクライアント)にメッセージを送信するかどうかを指定します。 デフォルトはfalseです(送信者にはエコーしません)。 | |
filters:IFilter (default = null) — メッセージに適用する一つ以上のフィルターを指定します。 フィルターは各クライアントがメッセージを受信するために満たさなければいけない条件を指定します。 たとえば、メッセージを受信するのは属性"team"が"red"に設定されたクライアントだけといった指示ができます。 完全な詳細については、Filterクラスを参照してください。 フィルターがnullの場合、関係する全てのクライアントがメッセージを受信します。 | |
... rest — オプションです。引数のストリング値をカンマで区切ったリストとしてこのメッセージに付与します。 これらのメッセージはメッセージの受信を登録している全てのリスナーに渡されることになります。 RoomのaddMessageListener()メソッドを参照してください。 |
関連項目
theRoom.sendMessage("CHAT", true, null, messageText);| sendModuleMessage | () | メソッド |
public function sendModuleMessage(messageName:String, messageArguments:Object = null):void| バージョン : | Reactor 1.0.0 |
指定したメッセージをこのルームのサーバーサイドのモジュールに送信します。 ルームモジュールの情報については、Union Server's modules documentationを参照してください。
パラメータ
messageName:String | |
messageArguments:Object (default = null) |
// "submitAnswer"メッセージを"answer"を"green"に設定した引数とともに送信します。
var messageArguments:Object = new Object();
messageArguments.answer = "green";
theRoom.sendModuleMessage("submitAnswer", messageArguments);
// 上と同じですが、オブジェクトリテラルなシンテックスを使用しています。
theRoom.sendModuleMessage("submitAnswer", {answer:"green"});
| setAttribute | () | メソッド |
public function setAttribute(attrName:String, attrValue:String, isShared:Boolean = true, isPersistent:Boolean = false, evaluate:Boolean = false):void| バージョン : | Reactor 1.0.0 |
このルームの属性設定をサーバーに要求します。 属性はルーム内の他の全クライアントと自動的に共有できる利点を加えたルームのプロパティのようなものです。 ルーム属性は、ゲームルームのハイスコアやバーチャルハウスの家具配置のようなルーム環境についての情報を格納するためにあります。
isSharedをtrueに設定してsetAttribute()を呼び出すと、デフォルトではその属性値は自動的にルーム内の全クライアントに反映されます。 クライアントは共有されているルーム属性の値の変更にAttributeEvent.UPDATEイベントを通して応答できます。 クライアントが属性の更新を受信したくない場合は、setUpdateLevels()を使用して通知をうけない選択もできます。
ルーム属性を削除するにはdeleteAttribute()を使用します。
ルーム属性はUnionビルトインの属性永続化機能によってサーバー上のデータベースに保存することができます。 ルーム属性を保存するためには、setAttribute()のisPersistentパラメータをtrueに設定してください。 デフォルトでは、UnionサーバーはApache Derbyと呼ばれる軽量なビルトインのデータベースを通して永続ルーム属性をサポートします。 DerbyはUnionサーバーにビルトインされているため、Unionの永続ルーム属性機能は特別な設定や追加のインストールなしで使用することができます。 しかしながら、他のデータベースか任意のデータソースを好む開発者は、Unionビルトインのデータベースをカスタマイズしたり、完全に入れ替えることができます。 Unionの永続データソースをカスタマイズする情報については、Union Server Persistenceを参照してください。
内部的には、予約文字はサーバとの送受信中に属性の区切り文字として使用されることに留意してください。 予約文字はスタティック変数Tokens.RSに割り当てられています。デフォルトではパイプ文字"|"です。 コード中では属性の名称にも値にもこの文字を使ってはいけません。
##[DESCRIBE SECURITY/PERMISSIONS MODEL HERE]パラメータ
attrName:String — 属性名です。 &, ", ', <, >, または Tokens.RS を含んではいけません。 | |
attrValue:String — 属性の値です。 ストリングである必要があります。 Tokens.RSを含んではいけません。 | |
isShared:Boolean (default = true) — trueの場合は、この属性が設定されるルーム内の全ての関係するクライアントはこの属性が変更されたときに通知されます。 falseの場合は、属性値はサーバーには保存されますがルーム内のクライアントにはその存在も値も自動的には通知されません。 非共有のルーム属性を取り出したいクライアントは ##[クライアントがやらなければならないことをここで説明] する必要があります。 | |
isPersistent:Boolean (default = false) — trueの場合は、属性がサーバー側のデータベースに保存されることになります。 データベースに格納された属性は"永続属性"として知られます。 永続属性はサーバーがシャットダウンしたあとも保存されています。 サーバーが再起動したとき、永続属性が格納されているルームは再生成され、永続属性を自動的にロードします。 もしその永続属性も共有される場合、ルームに入室するクライアントは自動的にその属性名と値を通知されます。 | |
evaluate:Boolean (default = false) — trueの場合、サーバーは属性に新しい値を割り当てる前に、数値計算の表現としてattrValueを実行します。 この表現内では、"%v"というトークンは"属性の現在値への置換"を意味します。 たとえば、次のコードは存在する属性"visits"に1を加えます。 theRoom.setAttribute("visits", "%v+1", true, false, true);。 evaluateがtrueのとき、attrValueは次の文字のみを含むことができます: 0-9の数値, ., /, +, -, %, v |
関連項目
| setDefaultClientClass | () | メソッド |
public function setDefaultClientClass(defaultClass:Class):void| バージョン : | Reactor 1.0.0 |
クラスをルームのクライアントに使用されるデフォルトクラスとして割り当てます。 デフォルトでは、全てのクライアントはIClientを実装したClientクラスのインスタンスによって表されます。 Reactorのアプリケーションは、しかしながら、クライアントを自作クラスで表現することを選択できます。 自作クライアントクラスはClientクラスのsetClientClass()メソッドを通して、基本的にクライアントごとに指定できます。 または、RoomクラスのsetDefaultClientClass()メソッドを通して自作クライアントクラスをルームごとに指定することができます。 ルームのクラスがsetDefaultClientClass()を通して指定されているとき、そのルームのgetClient()メソッドを通して取得される全てのクライアントについて、そのクライアントがClientクラスのsetClientClass()メソッドを通して自作クラスを指定していない限り、そのクライアントクラスが使用されます。setClientClass()メソッドはRoomのsetDefaultClientClass()をオーバーライドします。 グローバルにクライアントに自作クラス設定するには、ClientManagerクラスのsetDefaultClientClass()を使用します。
パラメータ
defaultClass:Class — このルームにおけるデフォルトのクライアントクラスです。 クラスは通常はCustomClientの派生ですが、IClientインターフェイスを実装したどんなクラスでも使えます。 |
関連項目
| setRoomSettings | () | メソッド |
public function setRoomSettings(settings:RoomSettings):void| バージョン : | Reactor 1.0.0 |
ルームに新たな設定を割り当てます。 有効なルーム設定の一覧は、RoomSettings クラスを参照してください。 ルーム設定を変更するには、現クライアントは十分な権限を持っている必要があります。 デフォルトでは、ルームの作成者にはルーム設定を変更する権限があります。 他の種類の(例えばモデレーター)クライアントにルーム設定の変更を許可するには、リモートクライアントのセキュリティロールをUnionサーバーのセキュリティドキュメントで記述されているように定義してください。
パラメータ
settings:RoomSettings — ルームの新しい設定です。 null の RoomSettings 変数は変更されません。 |
関連項目
var settings:RoomSettings = new RoomSettings();
settings.password = "newpass";
settings.maxClients = 200;
room.setRoomSettings(settings);
| setUpdateLevels | () | メソッド |
public function setUpdateLevels(updateLevels:UpdateLevels):void| バージョン : | Reactor 1.0.0 |
現クライアントがこのルームに入室あるいは観戦している間に、このルームについてサーバーから受信する情報量を指定します。 詳細については、UpdateLevelsクラスを参照してください。
パラメータ
updateLevels:UpdateLevels |
関連項目
| stopObserving | () | メソッド |
public function stopObserving():void| バージョン : | Reactor 1.0.0 |
このルームの観察停止をサーバーに要求します。 このメソッドはRoomManagerのstopObserveRoom()メソッドにそのまま渡されます。 詳細はobserveRoom()メソッドを参照してください。
関連項目
| toString | () | メソッド |
override public function toString():String| バージョン : | Reactor 1.0.0 |
このオブジェクトのString表現を提供します。
戻り値String |
| ADD_OBSERVER | イベント |
RoomEventnet.user1.reactor.RoomEvent.ADD_OBSERVER
クライアントがルームの観戦を開始し、次の二つの条件を満たすときに送出されます: 1) 現クライアントがそのルームに入室か観戦している、2) 現クライアントがそのルームの "観戦者リスト" 更新を有効にしている (観戦者リスト更新はデフォルトでは無効です)。 ルームの観戦者リストを有効化あるいは無効化するには、UpdateLevelsオブジェクトにobserverList変数をセットし、そのオブジェクトを次のいずれかのメソッドに渡してください:
例えば、次のコードはtheRoomによって参照されるRoomオブジェクトにおける観戦者リストの更新を有効化します:
var updateLevels:UpdateLevels = new UpdateLevels();
updateLevels.observerList = true;
theRoom.setUpdateLevels(updateLevels);
関連項目
| ADD_OCCUPANT | イベント |
RoomEventnet.user1.reactor.RoomEvent.ADD_OCCUPANT
クライアントがルームに入室し、次の二つの条件を満たすときに送出されます: 1) 現クライアントがそのルームに入室か観戦している、2) 現クライアントがそのルームの "入室者リスト" 更新を有効にしている (入室者リスト更新はデフォルトで有効です)。 ルームの入室者リストを有効化あるいは無効化するには、UpdateLevelsオブジェクトにoccupantList変数をセットし、そのオブジェクトを次のいずれかのメソッドに渡してください:
例えば、次のコードはtheRoomによって参照されるRoomオブジェクトにおける入室者リストの更新を無効化します:
var updateLevels:UpdateLevels = new UpdateLevels();
updateLevels.occupantList = false;
theRoom.setUpdateLevels(updateLevels);
関連項目
| DELETE | イベント |
AttributeEventnet.user1.reactor.AttributeEvent.DELETE属性が削除されるときに送出されます。
関連項目
| DELETE_CLIENT_ATTRIBUTE | イベント |
RoomEventnet.user1.reactor.RoomEvent.DELETE_CLIENT_ATTRIBUTE
現クライアントがルームに入室しているか観戦していて、現クライアントが関心を持っている属性がそのルーム内の入室者か観戦者のいずれかによって除去されたときに送出されます。 特に、RoomEvent.DELETE_CLIENT_ATTRIBUTE は次のいずれかが発生するとトリガーされます:
ルームの入室者または観戦者の属性更新を有効化あるいは無効化するには、最初に、UpdateLevelsオブジェクト上の次の変数のいずれかをセットします:
例えば、次のコードはtheRoomによって参照されるルームの入室者の全ての共有属性の更新を無効化します:
var updateLevels:UpdateLevels = new UpdateLevels();
updateLevels.sharedOccupantAttributesRoom = false;
updateLevels.sharedOccupantAttributesGlobal = false;
theRoom.setUpdateLevels(updateLevels);
関連項目
| DELETE_RESULT | イベント |
AttributeEventnet.user1.reactor.AttributeEvent.DELETE_RESULT
属性の削除試行の結果を受信したときに送出されます。 試行結果を診断するには、getStatus()を使用します。これは次の値をとる可能性があります。
関連項目
| JOIN | イベント |
RoomEventnet.user1.reactor.RoomEvent.JOIN
サーバー側のコードか、先にルームへの入室要求を行った結果として、現クライアントがルームへの入室に成功したときに送出されます。
RoomEvent.JOINイベントは現クライアントにのみ適用される点に留意してください。 任意のクライアントがルームに入室するときに通知を受けるには、RoomEvent.ADD_OCCUPANTイベントを登録してください。
関連項目
| JOIN_RESULT | イベント |
RoomEventnet.user1.reactor.RoomEvent.JOIN_RESULT先に行われたルーム入室要求の結果を取得したときに送出されます。 要求の結果を確認するためには、getStatus()を使用してください。これは次の戻り値のうちどれかになります:
もしルーム入室要求が成功した場合、RoomEvent.JOINイベントもトリガーされます。
関連項目
| LEAVE | イベント |
RoomEventnet.user1.reactor.RoomEvent.LEAVE
サーバー側のコードか、先にルームからの退室要求を行った結果として、現クライアントがルームからの退室に成功したときに送出されます。
RoomEvent.LEAVEイベントは現クライアントにのみ適用される点に留意してください。 任意のクライアントがルームから退出するときに通知を受けるには、RoomEvent.REMOVE_OCCUPANTイベントを登録してください。
関連項目
| LEAVE_RESULT | イベント |
RoomEventnet.user1.reactor.RoomEvent.LEAVE_RESULT先に行われたルーム退室要求の結果を取得したときに送出されます。 要求の結果を確認するためには、getStatus()を使用してください。これは次の戻り値のうちどれかになります:
もしその入退室要求が成功した場合、RoomEvent.LEAVEイベントもトリガーされます。
関連項目
| OBSERVE | イベント |
RoomEventnet.user1.reactor.RoomEvent.OBSERVEサーバー側のコードか、先にルームの観察要求を行った結果として、現クライアントがルームの観察に成功したときに送出されます。 RoomEvent.OBSERVEは現クライアントにしか適用されない点に留意してください。他のクライアントがルームを観戦するときに通知を受けるには、RoomEvent.ADD_OBSERVERイベントを登録してください。
関連項目
| OBSERVE_RESULT | イベント |
RoomEventnet.user1.reactor.RoomEvent.OBSERVE_RESULT先に行われたルーム観察要求の結果を取得したときに送出されます。 要求の結果を確認するためには、getStatus()を使用してください。これは次の戻り値のうちどれかになります:
関連項目
| OCCUPANT_COUNT | イベント |
RoomEventnet.user1.reactor.RoomEvent.OCCUPANT_COUNT
現クライアントが入室しているか観戦しているルームの入室者数が変化し、現クライアントがそのルームについて"入室者リスト"更新か"入室者カウント"更新を有効にしているときに送出されます(入室者リスト更新はデフォルトで有効になっています)。 ルームの入室者リストの更新か入室者数の更新を有効化あるいは無効化するには、(それぞれ)occupantList変数かoccupantCount変数をUpdateLevelsオブジェクトにセットし、そのオブジェクトを次のいずれかのメソッドに渡してください:
例えば、次のコードはtheRoomによって参照されるRoomオブジェクトにおける入室者リストの更新を無効化し、入室者数の更新を有効化します:
var updateLevels:UpdateLevels = new UpdateLevels();
updateLevels.occupantList = false;
updateLevels.occupantCount = true;
theRoom.setUpdateLevels(updateLevels);
関連項目
| OSERVER_COUNT | イベント |
RoomEventnet.user1.reactor.RoomEvent.OBSERVER_COUNT
現クライアントが入室しているか観戦しているルームの観戦者数が変化し、現クライアントがそのルームについて"観戦者リスト"更新か"観戦者カウント"更新を有効にしているときに送出されます(どちらもデフォルトでは無効になっています)。 ルームの観戦者リストの更新か観戦者数の更新を有効化あるいは無効化するには、(それぞれ)observerList変数かobserverCount変数をUpdateLevelsオブジェクトにセットし、そのオブジェクトを次のいずれかのメソッドに渡してください:
例えば、次のコードはtheRoomによって参照されるRoomオブジェクトにおける観戦者数の更新を有効化します:
var updateLevels:UpdateLevels = new UpdateLevels();
updateLevels.observerCount = true;
theRoom.setUpdateLevels(updateLevels);
関連項目
| REMOVE_OBSERVER | イベント |
RoomEventnet.user1.reactor.RoomEvent.REMOVE_OBSERVER
クライアントがルームの観戦を停止し、次の二つの条件を満たすときに送出されます: 1) 現クライアントがそのルームに入室か観戦している、2) 現クライアントがそのルームの "観戦者リスト" 更新を有効にしている (観戦者リスト更新はデフォルトでは無効です)。 ルームの観戦者リストを有効化あるいは無効化するには、UpdateLevelsオブジェクトにobserverList変数をセットし、そのオブジェクトを次のいずれかのメソッドに渡してください:
例えば、次のコードはtheRoomによって参照されるRoomオブジェクトにおける観戦者リストの更新を有効化します:
var updateLevels:UpdateLevels = new UpdateLevels();
updateLevels.observerList = true;
theRoom.setUpdateLevels(updateLevels);
関連項目
| REMOVE_OCCUPANT | イベント |
RoomEventnet.user1.reactor.RoomEvent.REMOVE_OCCUPANT
クライアントがルームから退室し、次の二つの条件を満たすときに送出されます: 1) 現クライアントがそのルームに入室か観戦している、2) 現クライアントがそのルームの "入室者リスト" 更新を有効にしている (入室者リスト更新はデフォルトで有効です)。 ルームの入室者リストを有効化あるいは無効化するには、UpdateLevelsオブジェクトにoccupantList変数をセットし、そのオブジェクトを次のいずれかのメソッドに渡してください:
例えば、次のコードはtheRoomによって参照されるRoomオブジェクトにおける入室者リストの更新を無効化します:
var updateLevels:UpdateLevels = new UpdateLevels();
updateLevels.occupantList = false;
theRoom.setUpdateLevels(updateLevels);
関連項目
| REMOVED | イベント |
RoomEventnet.user1.reactor.RoomEvent.REMOVEDそれまで現クライアントによって把握されていたルームが把握できなくなったときに送出されます。 ルームはキャッシュされたか、入室したか、観戦を開始したか、または監視されたときに現クライアントによって把握されます。 現クライアントのルームキャッシュについての情報については、RoomManagerのdisposeChachedRooms()メソッドを参照してください。
関連項目
| SET_RESULT | イベント |
AttributeEventnet.user1.reactor.AttributeEvent.SET_RESULT
属性のセット試行の結果を受信したときに送出されます。 試行結果を診断するには、getStatus()を使用します。これは次の値をとる可能性があります。
関連項目
| STOP_OBSERVING | イベント |
RoomEventnet.user1.reactor.RoomEvent.STOP_OBSERVINGサーバー側のコードか、先にルームの観察停止要求を行った結果として、現クライアントがルームの観察停止に成功したときに送出されます。
関連項目
| STOP_OBSERVING_RESULT | イベント |
RoomEventnet.user1.reactor.RoomEvent.STOP_OBSERVING_RESULT先に行われた観察停止要求の結果を取得したときに送出されます。 要求の結果を確認するためには、getStatus()を使用してください。これは次の戻り値のうちどれかになります:
関連項目
| SYNCHRONIZE | イベント |
RoomEventnet.user1.reactor.RoomEvent.SYNCHRONIZEルームがサーバーの状態と同期したときに送出されます。 ルームは現クライアントが入室か観戦を開始するときに同期されます。
関連項目
| UPDATE | イベント |
AttributeEventnet.user1.reactor.AttributeEvent.UPDATE属性が変化するか最初にセットされるときに送出されます。
関連項目
| UPDATE_CLIENT_ATTRIBUTE | イベント |
RoomEventnet.user1.reactor.RoomEvent.UPDATE_CLIENT_ATTRIBUTE
現クライアントがルームに入室しているか観戦していて、現クライアントが関心を持っている属性がそのルーム内の入室者か観戦者のいずれかにおいて変更されたときに送出されます。 特に、RoomEvent.UPDATE_CLIENT_ATTRIBUTE は次のいずれかが発生するとトリガーされます:
ルームの入室者または観戦者の属性更新を有効化あるいは無効化するには、最初に、UpdateLevelsオブジェクト上の次の変数のいずれかをセットします:
例えば、次のコードはtheRoomによって参照されるRoomオブジェクトにおける観戦者のルームをスコープとした共有属性の更新を有効化します:
var updateLevels:UpdateLevels = new UpdateLevels();
updateLevels.sharedObserverAttributesRoom = true;
theRoom.setUpdateLevels(updateLevels);
関連項目