パッケージflash.net
クラスpublic class XMLSocket
継承XMLSocket Inheritance EventDispatcher Inheritance Object

言語バージョン: ActionScript 3.0
ランタイムバージョン: AIR 1.0 Flash Player 9

XMLSocket クラスはクライアントソケットを実装しており、Flash Player または AIR アプリケーションはこのソケットを使用して、IP アドレスまたはドメイン名で識別されるサーバーコンピュータと通信できます。 XMLSocket クラスは、リアルタイムのチャットシステムなど待ち時間を短くすることが求められるクライアント/サーバーアプリケーションに適しています。従来の HTTP ベースチャットソリューションは頻繁にサーバーをポーリングし、HTTP 要求を使用して新しいメッセージをダウンロードします。それに対して、XMLSocket チャットソリューションはサーバーに対して開いた接続を維持するため、サーバーはクライアントから要求を受けずにただちに着信メッセージを送ることができます。XMLSocket クラスを使用するには、サーバーコンピュータは XMLSocket クラスで使用されるプロトコルに対応したデーモンを実行する必要があります。プロトコルの説明を次の一覧に示します。

XMLSocket オブジェクトと通信するようにサーバを設定すると、問題が発生する可能性があります。 アプリケーションがリアルタイムのインタラクティブ機能を必要としない場合は、XMLSocket クラスの代わりに、URLLoader クラスを使用します。

XMLSocket クラスのメソッドを使用するには、まず new XMLSocket コンストラクタを使用して XMLSocket オブジェクトを作成します。

ローカルファイルシステムのサンドボックス内の SWF ファイルはソケットを使用できません。

ターゲットホスト上のソケットポリシーファイルで、SWF ファイルがソケット接続できるホストと、その接続ができるポートを指定します。Flash Player の最近のリリースでは、ソケットポリシーファイルに関するセキュリティ要件が以前より厳密になっています。Flash Player のすべてのバージョンで、ソケットポリシーファイルを使用することをお勧めします。環境によっては、ソケットポリシーファイルの使用が必須となっています。このため、XMLSocket オブジェクトを使用している場合は、必要に応じてターゲットホストがソケットポリシーファイルを提供するようにしてください。

次の一覧は、Flash Player の各バージョンにおけるソケットポリシーファイルの要件をまとめたものです。

ただし、Adobe AIR では、application セキュリティサンドボックス内のコンテンツ(AIR アプリケーションと共にインストールされたコンテンツ)は、これらのセキュリティ制限による制限を受けません。

セキュリティ情報について詳しくは、以下を参照してください。

例を表示

関連項目

flash.net.URLLoader.load()
flash.net.URLLoader
Socket connections


パブリックプロパティ
 プロパティ定義元
  connected : Boolean
[読み取り専用] この XMLSocket オブジェクトが現在、接続されているかどうかを示します。
XMLSocket
 Inheritedconstructor : Object
指定されたオブジェクトインスタンスのクラスオブジェクトまたはコンストラクタ関数への参照です。
Object
 Inheritedprototype : Object
[静的] クラスまたは関数オブジェクトのプロトタイプオブジェクトへの参照です。
Object
  timeout : int
接続までの待ち時間(ミリ秒数)を示します。
XMLSocket
パブリックメソッド
 メソッド定義元
  
XMLSocket(host:String = null, port:int = 0)
新しい XMLSocket オブジェクトを作成します。
XMLSocket
 Inherited
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
イベントリスナーオブジェクトを EventDispatcher オブジェクトに登録し、リスナーがイベントの通知を受け取るようにします。
EventDispatcher
  
XMLSocket オブジェクトで指定された接続を閉じます。
XMLSocket
  
connect(host:String, port:int):void
指定された TCP ポートを使用して指定されたインターネットホストへの接続を確立します。
XMLSocket
 Inherited
イベントをイベントフローに送出します。
EventDispatcher
 Inherited
EventDispatcher オブジェクトに、特定のイベントタイプに対して登録されたリスナーがあるかどうかを確認します。
EventDispatcher
 Inherited
オブジェクトに指定されたプロパティが定義されているかどうかを示します。
Object
 Inherited
Object クラスのインスタンスが、パラメータとして指定されたオブジェクトのプロトタイプチェーン内にあるかどうかを示します。
Object
 Inherited
指定されたプロパティが存在し、列挙できるかどうかを示します。
Object
 Inherited
removeEventListener(type:String, listener:Function, useCapture:Boolean = false):void
EventDispatcher オブジェクトからリスナーを削除します。
EventDispatcher
  
send(object:*):void
object パラメータで指定された XML オブジェクトまたはデータをストリングに変換し、その後ろにゼロ (0) バイトを付加してサーバーに転送します。
XMLSocket
 Inherited
ループ処理に対するダイナミックプロパティの可用性を設定します。
Object
 Inherited
指定されたオブジェクトのストリング表現を返します。
Object
 Inherited
指定されたオブジェクトのプリミティブな値を返します。
Object
 Inherited
指定されたイベントタイプについて、この EventDispatcher オブジェクトまたはその祖先にイベントリスナーが登録されているかどうかを確認します。
EventDispatcher
イベント
 イベント 概要 定義元
 Inherited[ブロードキャスト イベント] Flash Player または AIR アプリケーションがオペレーティングシステムのフォーカスを取得して、アクティブになったときに送出されます。EventDispatcher
  サーバーによりソケット接続が閉じられたときに送出されます。XMLSocket
  XMLSocket.connect() メソッドの呼び出しが成功したときに送出されます。XMLSocket
  未処理のデータが送受信された後に送出されます。XMLSocket
 Inherited[ブロードキャスト イベント] Flash Player または AIR アプリケーションがオペレーティングシステムのフォーカスを失って、非アクティブになったときに送出されます。EventDispatcher
  入出力エラーが発生して送信または受信操作が失敗したときに送出されます。XMLSocket
  XMLSocket.connect() メソッドの呼び出しによって、呼び出し元のセキュリティサンドボックスの外にあるサーバーや 1024 未満のポート番号に対して接続しようとしたときに送出されます。XMLSocket
プロパティの詳細
connectedプロパティ
connected:Boolean  [読み取り専用]

言語バージョン: ActionScript 3.0
ランタイムバージョン: AIR 1.0 Flash Player 9

この XMLSocket オブジェクトが現在、接続されているかどうかを示します。connect イベントと ioError イベントに対して登録を行い、接続が成功したかどうかを調べることもできます。



実装
    public function get connected():Boolean

関連項目

timeoutプロパティ 
timeout:int

言語バージョン: ActionScript 3.0
ランタイムバージョン: Flash Player 10, AIR 1.5

接続までの待ち時間(ミリ秒数)を示します。

指定した時間内に接続できなかったときは、接続が失敗することになります。デフォルト値は 20,000 (20 秒) です。



実装
    public function get timeout():int
    public function set timeout(value:int):void
コンストラクタの詳細
XMLSocket()コンストラクタ
public function XMLSocket(host:String = null, port:int = 0)

言語バージョン: ActionScript 3.0
ランタイムバージョン: AIR 1.0 Flash Player 9

新しい XMLSocket オブジェクトを作成します。 パラメータを指定しないと、初期状態では未接続のソケットが作成されます。パラメータを指定すると、指定したホストおよびポートへの接続が試行されます。

注意:パラメータを指定せずにコンストラクタフォームを使用し、さらにいずれかのイベントリスナーを追加し、connect メソッドを呼び出す(host および port パラメータを指定する)ことを強く推奨します。このシーケンスによって、すべてのイベントリスナーが正しく動作するようになります。

パラメータ
host:String (default = null) — FQDN(完全修飾ドメイン名)、つまり .222.333.444 という形式の IP アドレスです。Flash Player 9.0.115.0 および AIR 1.0 以降では、rtmp://[2001:db8:ccc3:ffff:0:444d:555e:666f] などの IPv6 アドレスを指定できます。null を指定して、SWF ファイルが存在するホストサーバーに接続することもできます。呼び出し元の SWF ファイルが Web ブラウザ内で実行されている場合は、host が SWF ファイルと同じドメイン内に存在する必要があります。
 
port:int (default = 0) — 接続の確立に使用するターゲットホスト上の TCP ポート番号です。Flash Player 9.0.124.0 以降のバージョンでは、ターゲットホストは、SWF ファイルを提供するホストから指定のポートへのソケット接続を許可するように指定した、ソケットポリシーファイルを提供する必要があります。以前のバージョンの Flash Player では、1024 番未満のポートに接続するか、SWF ファイルを提供しているホスト以外のホストに接続するときのみ、ソケットポリシーファイルが必要です。

関連項目

メソッドの詳細
close()メソッド
public function close():void

言語バージョン: ActionScript 3.0
ランタイムバージョン: AIR 1.0 Flash Player 9

XMLSocket オブジェクトで指定された接続を閉じます。close イベントは、サーバーにより接続が閉じられたときのみ送出されます。close() メソッドを呼び出しても送出されません。

関連項目

connect()メソッド 
public function connect(host:String, port:int):void

言語バージョン: ActionScript 3.0
ランタイムバージョン: AIR 1.0 Flash Player 9

指定された TCP ポートを使用して指定されたインターネットホストへの接続を確立します。

nullhost パラメータに対して指定した場合は、XMLSocket.connect() を呼び出すファイルが存在するホストに接続します。例えば、www.adobe.com から呼び出し元ファイルをダウンロードした場合は、host パラメータに null を指定することは、www.adobe.com に接続することを意味します。

ファイルがこのメソッドを使用しないようにするには、SWF コンテンツを含む HTML ページに allowNetworking パラメータ(object タグおよび embed タグ)を設定します。

詳細については、次のトピックを参照してください。

パラメータ

host:String — FQDN(完全修飾ドメイン名)、つまり 111.222.333.444 という形式の IP アドレスです。null を指定して、SWF ファイルが存在するホストサーバーに接続することもできます。呼び出し元ファイルが Web ブラウザ内で実行されている SWF ファイルである場合は、host がファイルと同じドメイン内に存在する必要があります。
 
port:int — 接続の確立に使用するターゲットホスト上の TCP ポート番号です。Flash Player 9.0.124.0 以降のバージョンでは、ターゲットホストは、SWF ファイルを提供するホストから指定のポートへのソケット接続を許可するように指定した、ソケットポリシーファイルを提供する必要があります。以前のバージョンの Flash Player では、1024 番未満のポートに接続するか、SWF ファイルを提供しているホスト以外のホストに接続するときのみ、ソケットポリシーファイルが必要です。


イベント
securityError:SecurityErrorEvent — 接続操作で、呼び出し側のセキュリティサンドボックスの外部のホスト、またはソケットポリシーファイルが必要なポートに接続しようとしました。ターゲットホスト上でソケットポリシーファイルを使用することで、両方の問題を回避します。
 
data:DataEvent — 未処理のデータを受信したときに送出されます。
 
connect:Event — ネットワーク接続が確立されたときに送出されます。

例外
SecurityError — 信頼されていないローカルファイルはインターネットへの接続を許可されません。このファイルを local-with-networking または trusted として分類し直すことで、この制限を回避します。
 
SecurityError — 65535 より大きいソケットポートを指定することはできません。

関連項目

send()メソッド 
public function send(object:*):void

言語バージョン: ActionScript 3.0
ランタイムバージョン: AIR 1.0 Flash Player 9

object パラメータで指定された XML オブジェクトまたはデータをストリングに変換し、その後ろにゼロ (0) バイトを付加してサーバーに転送します。object が XML オブジェクトである場合、ストリングは XML オブジェクトの XML テキスト表現です。送信操作は非同期です。つまり、転送処理はただちに終了しますが、データが転送されるのは、その後です。XMLSocket.send() メソッドは、データが正常に転送されたかどうかを示す値を返しません。

XMLSocket.connect() を使用して、XMLSocket オブジェクトをサーバーに接続していない場合、XMLSocket.send() 操作は失敗します。

パラメータ

object:* — サーバーに転送する XML オブジェクトまたは他のデータです。


例外
IOError — XMLSocket オブジェクトはサーバーに接続されません。

関連項目

イベントの詳細
close イベント
イベントオブジェクトの型: flash.events.Event
プロパティ Event.type = flash.events.Event.CLOSE

言語バージョン: ActionScript 3.0
ランタイムバージョン: AIR 1.0 Flash Player 9

サーバーによりソケット接続が閉じられたときに送出されます。close イベントは、サーバーにより接続が閉じられたときのみ送出されます。XMLSocket.close() メソッドを呼び出しても送出されません。

Event.CLOSE 定数は、type プロパティ(close イベントオブジェクト)の値を定義します。

このイベントには、次のプロパティがあります。

プロパティ
bubblesfalse
cancelablefalse は、キャンセルするデフォルトの動作がないことを示します。
currentTargetイベントリスナーで Event オブジェクトをアクティブに処理しているオブジェクトです。
target接続が閉じられたオブジェクトです。
connect イベント  
イベントオブジェクトの型: flash.events.Event
プロパティ Event.type = flash.events.Event.CONNECT

言語バージョン: ActionScript 3.0
ランタイムバージョン: AIR 1.0 Flash Player 9

XMLSocket.connect() メソッドの呼び出しが成功した後に送出されます。

Event.CONNECT 定数は、type プロパティ(connect イベントオブジェクト)の値を定義します。

このイベントには、次のプロパティがあります。

プロパティ
bubblesfalse
cancelablefalse は、キャンセルするデフォルトの動作がないことを示します。
currentTargetイベントリスナーで Event オブジェクトをアクティブに処理しているオブジェクトです。
targetネットワーク接続を確立した Socket オブジェクトまたは XMLSocket オブジェクトです。
data イベント  
イベントオブジェクトの型: flash.events.DataEvent
プロパティ DataEvent.type = flash.events.DataEvent.DATA

言語バージョン: ActionScript 3.0
ランタイムバージョン: AIR 1.0 Flash Player 9

未処理のデータが送受信された後に送出されます。

type プロパティ (data イベントオブジェクト) の値を定義します。

このイベントには、次のプロパティがあります。

プロパティ
bubblesfalse
cancelablefalse は、キャンセルするデフォルトの動作がないことを示します。
currentTargetイベントリスナーで Event オブジェクトをアクティブに処理しているオブジェクトです。
dataFlash Player または Adobe AIR にロードされた生データです。
targetデータを受け取る XMLSocket オブジェクトです。
ioError イベント  
イベントオブジェクトの型: flash.events.IOErrorEvent
プロパティ IOErrorEvent.type = flash.events.IOErrorEvent.IO_ERROR

言語バージョン: ActionScript 3.0
ランタイムバージョン: AIR 1.0 Flash Player 9

入出力エラーが発生して送信または受信操作が失敗したときに送出されます。

type プロパティ (ioError イベントオブジェクト) の値を定義します。

このイベントには、次のプロパティがあります。

プロパティ
bubblesfalse
cancelablefalse は、キャンセルするデフォルトの動作がないことを示します。
currentTargetイベントリスナーで Event オブジェクトをアクティブに処理しているオブジェクトです。
errorID特定のエラーに関連付けられた参照番号です(AIR のみ)。
target入出力エラーが発生したネットワークオブジェクトです。
textエラーメッセージとして表示されるテキストです。
securityError イベント  
イベントオブジェクトの型: flash.events.SecurityErrorEvent
プロパティ SecurityErrorEvent.type = flash.events.SecurityErrorEvent.SECURITY_ERROR

言語バージョン: ActionScript 3.0
ランタイムバージョン: AIR 1.0 Flash Player 9

XMLSocket.connect() メソッドの呼び出しによって、呼び出し元のセキュリティサンドボックスの外にあるサーバーや 1024 未満のポート番号に対して接続しようとしたときに送出されます。

SecurityErrorEvent.SECURITY_ERROR 定数は、type プロパティ(securityError イベントオブジェクト)の値を定義します。

このイベントには、次のプロパティがあります。

プロパティ
bubblesfalse
cancelablefalse は、キャンセルするデフォルトの動作がないことを示します。
currentTargetイベントリスナーで Event オブジェクトをアクティブに処理しているオブジェクトです。
targetセキュリティエラーを報告するネットワークオブジェクトです。
textエラーメッセージとして表示されるテキストです。

関連項目

例の使用法
XMLSocketExample.as

次の例では、クラス XMLSocketExample を使用して、XMLSocket でデータを送信し、XMLSocket イベント時に情報をプリントします。ここでは以下の手順を実行します。
  1. XMLSocketExample コンストラクタが socket という名前の XMLSocket インスタンスを作成し、socket を後述の ConfigureListeners() に渡します。次に XMLSocket の connect() メソッドを呼び出します。この呼び出しには、ホスト名「localhost」とポート番号 8080 を使用します。
  2. configureListeners() メソッドを呼び出して、サポートされる各 XMLSocket イベントのリスナーを追加します。
    • closeHandler()close イベントをリッスンします。このイベントはネットワーク接続が閉じられた後に送出されます。
    • connectHandler()connect イベントをリッスンします。このイベントはネットワーク接続が確立されたときに送出されます。
    • dataHandler()data イベントをリッスンします。このイベントは XMLSocket が新しいデータを受け取るたびに送出されます。
    • progressHandler()progress イベントをリッスンします。このイベントは send() が呼び出されたとき、送信中に送出されます。
    • securityErrorHandler()securityError イベントをリッスンします。このイベントは、ローカルでの再生に関するセキュリティを誤って設定して、または 1024 より小さいポートを使用して、XMLSocket にアクセスしようとしたときに送出されます。
    • ioErrorHandler()ioError イベントをリッスンします。このイベントはデータの送信または受信操作に失敗すると発生します。

注意:


package {
    import flash.display.Sprite;
    import flash.events.*;
    import flash.net.XMLSocket;

    public class XMLSocketExample extends Sprite {
        private var hostName:String = "localhost";
        private var port:uint = 8080;
        private var socket:XMLSocket;

        public function XMLSocketExample() {
            socket = new XMLSocket();
            configureListeners(socket);
            if (hostName && port) {
                socket.connect(hostName, port);
            }
        }

        public function send(data:Object):void {
            socket.send(data);
        }

        private function configureListeners(dispatcher:IEventDispatcher):void {
            dispatcher.addEventListener(Event.CLOSE, closeHandler);
            dispatcher.addEventListener(Event.CONNECT, connectHandler);
            dispatcher.addEventListener(DataEvent.DATA, dataHandler);
            dispatcher.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
            dispatcher.addEventListener(ProgressEvent.PROGRESS, progressHandler);
            dispatcher.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
        }

        private function closeHandler(event:Event):void {
            trace("closeHandler: " + event);
        }

        private function connectHandler(event:Event):void {
            trace("connectHandler: " + event);
        }

        private function dataHandler(event:DataEvent):void {
            trace("dataHandler: " + event);
        }

        private function ioErrorHandler(event:IOErrorEvent):void {
            trace("ioErrorHandler: " + event);
        }

        private function progressHandler(event:ProgressEvent):void {
            trace("progressHandler loaded:" + event.bytesLoaded + " total: " + event.bytesTotal);
        }

        private function securityErrorHandler(event:SecurityErrorEvent):void {
            trace("securityErrorHandler: " + event);
        }
    }
}




 

 

このページに新しいコメントが追加された場合に、電子メールでの通知を希望する。 | コメントレポート

現在のページ: http://livedocs.adobe.com/flex/3_jp/langref/flash/net/XMLSocket.html