パッケージnet.user1.reactor
クラスpublic class Room
継承Room Inheritance 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);
  

関連項目

RoomManager
RoomClassRegistry.setRoomClass()


パブリック メソッド
 メソッド定義元
  
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
  
getClient(id:String):IClient
指定のIDをもつ入室者あるいは観戦者を返します。
Room
  
このルームのデフォルトクラスとして使われるクラスを返します。
Room
  
この呼び出し時にこのルームを観戦していることがわかっているクライアント数を返します。
Room
  
呼び出された時点でルームにいるとわかっているクライアント数を返します。
Room
  
現在このルームを観戦している全てのクライアントのIDを配列として返します。
Room
  
getObservers():Array
現在このルームを観戦している全てのクライアントを表すオブジェクトの配列を返します。
Room
  
現在このルームにいる全クライアントのIDを配列で返します。
Room
  
getOccupants():Array
現在ルーム内にいるクライアントを表現する全てのオブジェクトの配列を返します。
Room
  
getQualifier():String
ルームIDの修飾子部分を返します。
Room
  
getRoomID():String
このルームの完全修飾IDを返します。
Room
  
このルームの設定を記述する RoomSettings オブジェクトを返します。これには最大入室者数と、最後の入室者が退室したときにルームが自動的に除去されるかどうかの設定が含まれます。
Room
  
このルームの単純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
  
ルームに新たな設定を割り当てます。
Room
  
setUpdateLevels(updateLevels:UpdateLevels):void
現クライアントがこのルームに入室あるいは観戦している間に、このルームについてサーバーから受信する情報量を指定します。
Room
  
このルームの観察停止をサーバーに要求します。
Room
  
toString():String
[オーバーライド] このオブジェクトのString表現を提供します。
Room
Events
 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に送信される"CHAT"型のカスタムメッセージを受信するリスナーを登録します。
theRoom.addMessageListener("CHAT", chatMessageListener);
こちらが対応して登録されるリスナーです。 このリスナーの最初のパラメータのデータ型はReactorのメッセージングAPIに要求される通り、IClientであることに留意してください。 fromClientパラメータはそのメッセージを送信したクライアントを表すIClientオブジェクトへの参照を取得します。
     protected function chatMessageListener (fromClient:IClient,
                                             messageText:String):void {
       // 画面にメッセージを表示するコードをここに書きましょう
     }
     
A "CHAT" message is sent to the room as follows:
theRoom.sendMessage("CHAT", true, null, messageText);
メモ: 実際のアプリケーションでは、自作メッセージ名"CHAT"は通常はMessages.CHATのような定数に割り当てられます。
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()
getObservers()メソッド 
public function getObservers():Array

バージョン : Reactor 1.0.0

現在このルームを観戦している全てのクライアントを表すオブジェクトの配列を返します。 配列はルームを観戦しているクライアントの一時的なコピーであり、実際の観戦者リスト(クライアントがルームの観戦の開始や停止を続けることで変わります)には同期しません。

戻り値
Array

関連項目

getObserverIDs()
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

関連項目

setRoomSettings()
RoomMangaer.createRoom()
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クラスを参照してください。

関連項目



次のコードでは "lobby" という名称のルームを生成して入室する方法を示します。
     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()メソッドを参照してください。

関連項目



次のコードは "CHAT" という名前のカスタムメッセージを theRoom に入室しているか、観戦している全クライアントに、送信者自身も含めて送信します。
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

このルームの属性設定をサーバーに要求します。 属性はルーム内の他の全クライアントと自動的に共有できる利点を加えたルームのプロパティのようなものです。 ルーム属性は、ゲームルームのハイスコアやバーチャルハウスの家具配置のようなルーム環境についての情報を格納するためにあります。

isSharedtrueに設定して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 変数は変更されません。

関連項目



次のコードはルームのパスワードを "newpass" に変更し、その最大入室者数を200に設定します。
     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
Event Detail
ADD_OBSERVER イベント
Event Object Type: RoomEvent
RoomEvent.type variable = net.user1.reactor.RoomEvent.ADD_OBSERVER

クライアントがルームの観戦を開始し、次の二つの条件を満たすときに送出されます: 1) 現クライアントがそのルームに入室か観戦している、2) 現クライアントがそのルームの "観戦者リスト" 更新を有効にしている (観戦者リスト更新はデフォルトでは無効です)。 ルームの観戦者リストを有効化あるいは無効化するには、UpdateLevelsオブジェクトにobserverList変数をセットし、そのオブジェクトを次のいずれかのメソッドに渡してください:

例えば、次のコードはtheRoomによって参照されるRoomオブジェクトにおける観戦者リストの更新を有効化します:

     var updateLevels:UpdateLevels = new UpdateLevels();
     updateLevels.observerList = true;
     theRoom.setUpdateLevels(updateLevels);
     

関連項目

ADD_OCCUPANT イベント  
Event Object Type: RoomEvent
RoomEvent.type variable = net.user1.reactor.RoomEvent.ADD_OCCUPANT

クライアントがルームに入室し、次の二つの条件を満たすときに送出されます: 1) 現クライアントがそのルームに入室か観戦している、2) 現クライアントがそのルームの "入室者リスト" 更新を有効にしている (入室者リスト更新はデフォルトで有効です)。 ルームの入室者リストを有効化あるいは無効化するには、UpdateLevelsオブジェクトにoccupantList変数をセットし、そのオブジェクトを次のいずれかのメソッドに渡してください:

例えば、次のコードはtheRoomによって参照されるRoomオブジェクトにおける入室者リストの更新を無効化します:

     var updateLevels:UpdateLevels = new UpdateLevels();
     updateLevels.occupantList = false;
     theRoom.setUpdateLevels(updateLevels);
     

関連項目

DELETE イベント  
Event Object Type: AttributeEvent
AttributeEvent.type variable = net.user1.reactor.AttributeEvent.DELETE

属性が削除されるときに送出されます。

関連項目

DELETE_CLIENT_ATTRIBUTE イベント  
Event Object Type: RoomEvent
RoomEvent.type variable = net.user1.reactor.RoomEvent.DELETE_CLIENT_ATTRIBUTE

現クライアントがルームに入室しているか観戦していて、現クライアントが関心を持っている属性がそのルーム内の入室者か観戦者のいずれかによって除去されたときに送出されます。 特に、RoomEvent.DELETE_CLIENT_ATTRIBUTE は次のいずれかが発生するとトリガーされます:

ルームの入室者または観戦者の属性更新を有効化あるいは無効化するには、最初に、UpdateLevelsオブジェクト上の次の変数のいずれかをセットします:

次に、次のメソッドのいずれかにUpdateLevelsオブジェクトを渡します:

例えば、次のコードはtheRoomによって参照されるルームの入室者の全ての共有属性の更新を無効化します:

     var updateLevels:UpdateLevels = new UpdateLevels();
     updateLevels.sharedOccupantAttributesRoom = false;
     updateLevels.sharedOccupantAttributesGlobal = false;
     theRoom.setUpdateLevels(updateLevels);
     

関連項目

DELETE_RESULT イベント  
Event Object Type: AttributeEvent
AttributeEvent.type variable = net.user1.reactor.AttributeEvent.DELETE_RESULT

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

関連項目

JOIN イベント  
Event Object Type: RoomEvent
RoomEvent.type variable = net.user1.reactor.RoomEvent.JOIN

サーバー側のコードか、先にルームへの入室要求を行った結果として、現クライアントがルームへの入室に成功したときに送出されます。

RoomEvent.JOINイベントは現クライアントにのみ適用される点に留意してください。 任意のクライアントがルームに入室するときに通知を受けるには、RoomEvent.ADD_OCCUPANTイベントを登録してください。

関連項目

JOIN_RESULT イベント  
Event Object Type: RoomEvent
RoomEvent.type variable = net.user1.reactor.RoomEvent.JOIN_RESULT

先に行われたルーム入室要求の結果を取得したときに送出されます。 要求の結果を確認するためには、getStatus()を使用してください。これは次の戻り値のうちどれかになります:

もしルーム入室要求が成功した場合、RoomEvent.JOINイベントもトリガーされます。

関連項目

LEAVE イベント  
Event Object Type: RoomEvent
RoomEvent.type variable = net.user1.reactor.RoomEvent.LEAVE

サーバー側のコードか、先にルームからの退室要求を行った結果として、現クライアントがルームからの退室に成功したときに送出されます。

RoomEvent.LEAVEイベントは現クライアントにのみ適用される点に留意してください。 任意のクライアントがルームから退出するときに通知を受けるには、RoomEvent.REMOVE_OCCUPANTイベントを登録してください。

関連項目

LEAVE_RESULT イベント  
Event Object Type: RoomEvent
RoomEvent.type variable = net.user1.reactor.RoomEvent.LEAVE_RESULT

先に行われたルーム退室要求の結果を取得したときに送出されます。 要求の結果を確認するためには、getStatus()を使用してください。これは次の戻り値のうちどれかになります:

もしその入退室要求が成功した場合、RoomEvent.LEAVEイベントもトリガーされます。

関連項目

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

サーバー側のコードか、先にルームの観察要求を行った結果として、現クライアントがルームの観察に成功したときに送出されます。 RoomEvent.OBSERVEは現クライアントにしか適用されない点に留意してください。他のクライアントがルームを観戦するときに通知を受けるには、RoomEvent.ADD_OBSERVERイベントを登録してください。

関連項目

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

先に行われたルーム観察要求の結果を取得したときに送出されます。 要求の結果を確認するためには、getStatus()を使用してください。これは次の戻り値のうちどれかになります:

関連項目

OCCUPANT_COUNT イベント  
Event Object Type: RoomEvent
RoomEvent.type variable = net.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 イベント  
Event Object Type: RoomEvent
RoomEvent.type variable = net.user1.reactor.RoomEvent.OBSERVER_COUNT

現クライアントが入室しているか観戦しているルームの観戦者数が変化し、現クライアントがそのルームについて"観戦者リスト"更新か"観戦者カウント"更新を有効にしているときに送出されます(どちらもデフォルトでは無効になっています)。 ルームの観戦者リストの更新か観戦者数の更新を有効化あるいは無効化するには、(それぞれ)observerList変数かobserverCount変数をUpdateLevelsオブジェクトにセットし、そのオブジェクトを次のいずれかのメソッドに渡してください:

例えば、次のコードはtheRoomによって参照されるRoomオブジェクトにおける観戦者数の更新を有効化します:

     var updateLevels:UpdateLevels = new UpdateLevels();
     updateLevels.observerCount = true;
     theRoom.setUpdateLevels(updateLevels);
     

関連項目

REMOVE_OBSERVER イベント  
Event Object Type: RoomEvent
RoomEvent.type variable = net.user1.reactor.RoomEvent.REMOVE_OBSERVER

クライアントがルームの観戦を停止し、次の二つの条件を満たすときに送出されます: 1) 現クライアントがそのルームに入室か観戦している、2) 現クライアントがそのルームの "観戦者リスト" 更新を有効にしている (観戦者リスト更新はデフォルトでは無効です)。 ルームの観戦者リストを有効化あるいは無効化するには、UpdateLevelsオブジェクトにobserverList変数をセットし、そのオブジェクトを次のいずれかのメソッドに渡してください:

例えば、次のコードはtheRoomによって参照されるRoomオブジェクトにおける観戦者リストの更新を有効化します:

     var updateLevels:UpdateLevels = new UpdateLevels();
     updateLevels.observerList = true;
     theRoom.setUpdateLevels(updateLevels);
     

関連項目

REMOVE_OCCUPANT イベント  
Event Object Type: RoomEvent
RoomEvent.type variable = net.user1.reactor.RoomEvent.REMOVE_OCCUPANT

クライアントがルームから退室し、次の二つの条件を満たすときに送出されます: 1) 現クライアントがそのルームに入室か観戦している、2) 現クライアントがそのルームの "入室者リスト" 更新を有効にしている (入室者リスト更新はデフォルトで有効です)。 ルームの入室者リストを有効化あるいは無効化するには、UpdateLevelsオブジェクトにoccupantList変数をセットし、そのオブジェクトを次のいずれかのメソッドに渡してください:

例えば、次のコードはtheRoomによって参照されるRoomオブジェクトにおける入室者リストの更新を無効化します:

     var updateLevels:UpdateLevels = new UpdateLevels();
     updateLevels.occupantList = false;
     theRoom.setUpdateLevels(updateLevels);
     

関連項目

REMOVED イベント  
Event Object Type: RoomEvent
RoomEvent.type variable = net.user1.reactor.RoomEvent.REMOVED

それまで現クライアントによって把握されていたルームが把握できなくなったときに送出されます。 ルームはキャッシュされたか、入室したか、観戦を開始したか、または監視されたときに現クライアントによって把握されます。 現クライアントのルームキャッシュについての情報については、RoomManagerのdisposeChachedRooms()メソッドを参照してください。

関連項目

SET_RESULT イベント  
Event Object Type: AttributeEvent
AttributeEvent.type variable = net.user1.reactor.AttributeEvent.SET_RESULT

属性のセット試行の結果を受信したときに送出されます。 試行結果を診断するには、getStatus()を使用します。これは次の値をとる可能性があります。

関連項目

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

サーバー側のコードか、先にルームの観察停止要求を行った結果として、現クライアントがルームの観察停止に成功したときに送出されます。

関連項目

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

先に行われた観察停止要求の結果を取得したときに送出されます。 要求の結果を確認するためには、getStatus()を使用してください。これは次の戻り値のうちどれかになります:

関連項目

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

ルームがサーバーの状態と同期したときに送出されます。 ルームは現クライアントが入室か観戦を開始するときに同期されます。

関連項目

UPDATE イベント  
Event Object Type: AttributeEvent
AttributeEvent.type variable = net.user1.reactor.AttributeEvent.UPDATE

属性が変化するか最初にセットされるときに送出されます。

関連項目

UPDATE_CLIENT_ATTRIBUTE イベント  
Event Object Type: RoomEvent
RoomEvent.type variable = net.user1.reactor.RoomEvent.UPDATE_CLIENT_ATTRIBUTE

現クライアントがルームに入室しているか観戦していて、現クライアントが関心を持っている属性がそのルーム内の入室者か観戦者のいずれかにおいて変更されたときに送出されます。 特に、RoomEvent.UPDATE_CLIENT_ATTRIBUTE は次のいずれかが発生するとトリガーされます:

ルームの入室者または観戦者の属性更新を有効化あるいは無効化するには、最初に、UpdateLevelsオブジェクト上の次の変数のいずれかをセットします:

次に、次のメソッドのいずれかにUpdateLevelsオブジェクトを渡します:

例えば、次のコードはtheRoomによって参照されるRoomオブジェクトにおける観戦者のルームをスコープとした共有属性の更新を有効化します:

     var updateLevels:UpdateLevels = new UpdateLevels();
     updateLevels.sharedObserverAttributesRoom = true;
     theRoom.setUpdateLevels(updateLevels);
     

関連項目