パッケージ | flash.net |
クラス | public class XMLSocket |
継承 | XMLSocket EventDispatcher Object |
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 1.0, Flash Player 9, Flash Lite 4 |
- XML メッセージは、全二重 TCP/IP ストリームソケット接続を介して送られます。
- 個々の XML メッセージは完全な XML ドキュメントであり、ゼロ(0)バイトで終了します。
- 1 つの XMLSocket 接続を使用して送受信できる XML メッセージの数に制限はありません。
XMLSocket オブジェクトと通信するようにサーバーを設定すると、問題が発生する可能性があります。 アプリケーションがリアルタイムのインタラクティブ機能を必要としない場合は、XMLSocket クラスの代わりに、URLLoader クラスを使用します。
XMLSocket クラスのメソッドを使用するには、まず new XMLSocket
コンストラクターを使用して XMLSocket オブジェクトを作成します。
ローカルファイルシステムのサンドボックス内の SWF ファイルはソケットを使用できません。
ターゲットホスト上のソケットポリシーファイルで、SWF ファイルがソケット接続できるホストと、その接続ができるポートを指定します。Flash Player の最近のリリースでは、ソケットポリシーファイルに関するセキュリティ要件が以前より厳密になっています。Flash Player のすべてのバージョンで、ソケットポリシーファイルを使用することをお勧めします。環境によっては、ソケットポリシーファイルの使用が必須となっています。このため、XMLSocket オブジェクトを使用している場合は、必要に応じてターゲットホストがソケットポリシーファイルを提供するようにしてください。
次の一覧は、Flash Player の各バージョンにおけるソケットポリシーファイルの要件をまとめたものです。
- Flash Player 9.0.124.0 以降のバージョンでは、XMLSocket 接続にソケットポリシーファイルが必要です。つまり、接続しているポートには関係なく、ターゲットホスト上にソケットポリシーファイルが必要ということです。また、SWF ファイルを提供している同じホスト上のポートに接続している場合でも同様です。
- Flash Player 9.0.115.0 以前のバージョンでは、1024 未満のポートに接続するか、SWF ファイルを提供しているホスト以外のホストに接続するときは、ターゲットホスト上にソケットポリシーファイルが必要です。
- Flash Player 9.0.115.0 では、ソケットポリシーファイルが不要な場合でも、ターゲットホストがソケットポリシーファイルを提供していないときに Flash Debug Player を使うと警告が表示されます。
ただし、Adobe AIR では、アプリケーション
セキュリティサンドボックス内のコンテンツ(AIR アプリケーションと共にインストールされたコンテンツ)は、これらのセキュリティ制限による制限を受けません。
セキュリティについて詳しくは、Flash Player デベロッパーセンターのトピック:セキュリティを参照してください。
関連する API エレメント
プロパティ | 定義元 | ||
---|---|---|---|
connected : Boolean [読み取り専用]
この XMLSocket オブジェクトが現在、接続されているかどうかを示します。 | XMLSocket | ||
constructor : Object
指定されたオブジェクトインスタンスのクラスオブジェクトまたはコンストラクター関数への参照です。 | Object | ||
timeout : int
接続までの待ち時間(ミリ秒数)を示します。 | XMLSocket |
メソッド | 定義元 | ||
---|---|---|---|
新しい XMLSocket オブジェクトを作成します。 | XMLSocket | ||
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
イベントリスナーオブジェクトを EventDispatcher オブジェクトに登録し、リスナーがイベントの通知を受け取るようにします。 | EventDispatcher | ||
XMLSocket オブジェクトで指定された接続を閉じます。 | XMLSocket | ||
指定された TCP ポートを使用して指定されたインターネットホストへの接続を確立します。 | XMLSocket | ||
イベントをイベントフローに送出します。 | EventDispatcher | ||
EventDispatcher オブジェクトに、特定のイベントタイプに対して登録されたリスナーがあるかどうかを確認します。 | EventDispatcher | ||
オブジェクトに指定されたプロパティが定義されているかどうかを示します。 | Object | ||
Object クラスのインスタンスが、パラメーターとして指定されたオブジェクトのプロトタイプチェーン内にあるかどうかを示します。 | Object | ||
指定されたプロパティが存在し、列挙できるかどうかを示します。 | Object | ||
EventDispatcher オブジェクトからリスナーを削除します。 | EventDispatcher | ||
object パラメーターで指定された XML オブジェクトまたはデータをストリングに変換し、その後ろにゼロ(0)バイトを付加してサーバーに転送します。 | XMLSocket | ||
ループ処理に対するダイナミックプロパティの可用性を設定します。 | Object | ||
ロケール固有の規則に従って書式設定された、このオブジェクトのストリング表現を返します。 | Object | ||
指定されたオブジェクトのストリング表現を返します。 | Object | ||
指定されたオブジェクトのプリミティブな値を返します。 | Object | ||
指定されたイベントタイプについて、この EventDispatcher オブジェクトまたはその祖先にイベントリスナーが登録されているかどうかを確認します。 | EventDispatcher |
イベント | 概要 | 定義元 | ||
---|---|---|---|---|
[ブロードキャストイベント] Flash Player または AIR アプリケーションがオペレーティングシステムのフォーカスを取得して、アクティブになったときに送出されます。 | EventDispatcher | |||
サーバーによりソケット接続が閉じられたときに送出されます。 | XMLSocket | |||
XMLSocket.connect() メソッドの呼び出しが成功したときに送出されます。 | XMLSocket | |||
未処理のデータが送受信された後に送出されます。 | XMLSocket | |||
[ブロードキャストイベント] Flash Player または AIR アプリケーションがオペレーティングシステムのフォーカスを失って、非アクティブになったときに送出されます。 | EventDispatcher | |||
入出力エラーが発生して送信または受信操作が失敗したときに送出されます。 | XMLSocket | |||
XMLSocket.connect() メソッドの呼び出しによって、呼び出し元のセキュリティサンドボックスの外にあるサーバーや 1024 未満のポート番号に対して接続しようとしたときに送出されます。 | XMLSocket |
connected | プロパティ |
timeout | プロパティ |
XMLSocket | () | コンストラクター |
public function XMLSocket(host:String = null, port:int = 0)
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 1.0, Flash Player 9, Flash Lite 4 |
新しい XMLSocket オブジェクトを作成します。 パラメーターを指定しないと、初期状態では未接続のソケットが作成されます。パラメーターを指定すると、指定したホストおよびポートへの接続が試行されます。
注意:パラメーターを指定せずにコンストラクターフォームを使用し、さらにいずれかのイベントリスナーを追加し、connect
メソッドを呼び出すことを強く推奨します(ホスト
およびポート
をパラメーターに指定する)。このシーケンスによって、すべてのイベントリスナーが正しく動作するようになります。
host:String (default = null ) — FQDN(完全修飾ドメイン名)、つまり 111.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 ファイルを提供しているホスト以外のホストに接続するときのみ、ソケットポリシーファイルが必要です。
|
関連する API エレメント
close | () | メソッド |
connect | () | メソッド |
public function connect(host:String, port:int):void
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 1.0, Flash Player 9, Flash Lite 4 |
指定された TCP ポートを使用して指定されたインターネットホストへの接続を確立します。
null
を host
パラメーターに対して指定した場合は、XMLSocket.connect()
を呼び出すファイルが存在するホストに接続します。例えば、www.adobe.com から呼び出し元ファイルをダウンロードした場合は、host パラメーターに null
を指定することは、www.adobe.com に接続することを意味します。
ファイルがこのメソッドを使用しないようにするには、SWF コンテンツを含む HTML ページに allowNetworking
パラメーター(object
タグおよび embed
タグ)を設定します。
詳細については、Flash Player デベロッパーセンターのトピック:セキュリティを参照してください。
パラメーター
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: — 接続操作で、呼び出し側のセキュリティサンドボックスの外部のホスト、またはソケットポリシーファイルが必要なポートに接続しようとしました。ターゲットホスト上でソケットポリシーファイルを使用することで、両方の問題を回避します。
| |
data: — 未処理のデータを受信したときに送出されます。
| |
connect: — ネットワーク接続が確立されたときに送出されます。
|
例外
SecurityError — 信頼されていないローカルファイルはインターネットへの接続を許可されません。このファイルを local-with-networking または trusted として分類し直すことで、この制限を回避します。
| |
SecurityError — 65535 より大きいソケットポートを指定することはできません。
|
関連する API エレメント
send | () | メソッド |
public function send(object:*):void
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 1.0, Flash Player 9, Flash Lite 4 |
object
パラメーターで指定された XML オブジェクトまたはデータをストリングに変換し、その後ろにゼロ(0)バイトを付加してサーバーに転送します。object
が XML オブジェクトである場合、ストリングは XML オブジェクトの XML テキスト表現です。送信操作は非同期です。つまり、転送処理はただちに終了しますが、データが転送されるのは、その後です。XMLSocket.send()
メソッドは、データが正常に転送されたかどうかを示す値を返しません。
XMLSocket.connect()
を使用して、XMLSocket オブジェクトをサーバーに接続していない場合、XMLSocket.send()
操作は失敗します。
パラメーター
object:* — サーバーに転送する XML オブジェクトまたは他のデータです。
|
例外
IOError — XMLSocket オブジェクトはサーバーに接続されません。
|
関連する API エレメント
close | イベント |
flash.events.Event
プロパティ Event.type =
flash.events.Event.CLOSE
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 1.0, Flash Player 9, Flash Lite 4 |
サーバーによりソケット接続が閉じられたときに送出されます。close
イベントは、サーバーにより接続が閉じられたときのみ送出されます。XMLSocket.close()
メソッドを呼び出しても送出されません。
Event.CLOSE
定数は、type
プロパティ(close
イベントオブジェクト)の値を定義します。
このイベントには、次のプロパティがあります。
プロパティ | 値 |
---|---|
bubbles | false |
cancelable | false は、キャンセルするデフォルトの動作がないことを示します。 |
currentTarget | イベントリスナーで Event オブジェクトをアクティブに処理しているオブジェクトです。 |
target | 接続が閉じられたオブジェクトです。 |
connect | イベント |
flash.events.Event
プロパティ Event.type =
flash.events.Event.CONNECT
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 1.0, Flash Player 9, Flash Lite 4 |
XMLSocket.connect()
メソッドの呼び出しが成功した後に送出されます。
Event.CONNECT
定数は、type
プロパティ(connect
イベントオブジェクト)の値を定義します。
このイベントには、次のプロパティがあります。
プロパティ | 値 |
---|---|
bubbles | false |
cancelable | false は、キャンセルするデフォルトの動作がないことを示します。 |
currentTarget | イベントリスナーで Event オブジェクトをアクティブに処理しているオブジェクトです。 |
target | ネットワーク接続を確立した Socket オブジェクトまたは XMLSocket オブジェクトです。 |
data | イベント |
flash.events.DataEvent
プロパティ DataEvent.type =
flash.events.DataEvent.DATA
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 1.0, Flash Player 9, Flash Lite 4 |
未処理のデータが送受信された後に送出されます。
type
プロパティ(data
イベントオブジェクト)の値を定義します。
このイベントには、次のプロパティがあります。
プロパティ | 値 |
---|---|
bubbles | false |
cancelable | false は、キャンセルするデフォルトの動作がないことを示します。 |
currentTarget | イベントリスナーで Event オブジェクトをアクティブに処理しているオブジェクトです。 |
data | Flash 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, Flash Lite 4 |
入出力エラーが発生して送信または受信操作が失敗したときに送出されます。
type
プロパティ(ioError
イベントオブジェクト)の値を定義します。
このイベントには、次のプロパティがあります。
プロパティ | 値 |
---|---|
bubbles | false |
cancelable | false は、キャンセルするデフォルトの動作がないことを示します。 |
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, Flash Lite 4 |
XMLSocket.connect()
メソッドの呼び出しによって、呼び出し元のセキュリティサンドボックスの外にあるサーバーや 1024 未満のポート番号に対して接続しようとしたときに送出されます。
SecurityErrorEvent.SECURITY_ERROR
定数は、type
プロパティ(securityError
イベントオブジェクト)の値を定義します。
このイベントには、次のプロパティがあります。
プロパティ | 値 |
---|---|
bubbles | false |
cancelable | false は、キャンセルするデフォルトの動作がないことを示します。 |
currentTarget | イベントリスナーで Event オブジェクトをアクティブに処理しているオブジェクトです。 |
target | セキュリティエラーを報告するネットワークオブジェクトです。 |
text | エラーメッセージとして表示されるテキストです。 |
関連する API エレメント
- XMLSocketExample コンストラクターが
socket
という名前の XMLSocket インスタンスを作成し、socket
を後述のConfigureListeners()
に渡します。次に XMLSocket のconnect()
メソッドを呼び出します。この呼び出しには、ホスト名 "localhost" とポート番号8080
を使用します。 configureListeners()
メソッドを呼び出して、サポートされる各 XMLSocket イベントのリスナーを追加します。closeHandler()
:close
イベントをリッスンします。このイベントはネットワーク接続が閉じられた後に送出されます。connectHandler()
:connect
イベントをリッスンします。このイベントはネットワーク接続が確立されたときに送出されます。dataHandler()
:data
イベントをリッスンします。このイベントは XMLSocket が新しいデータを受け取るたびに送出されます。progressHandler()
:progress
イベントをリッスンします。このイベントはsend()
が呼び出されたとき、送信中に送出されます。securityErrorHandler()
:securityError
イベントをリッスンします。このイベントは、ローカルでの再生に関するセキュリティを誤って設定して、または 1024 より小さいポートを使用して、XMLSocket にアクセスしようとしたときに送出されます。ioErrorHandler()
:ioError
イベントをリッスンします。このイベントはデータの送信または受信操作に失敗すると発生します。
注意:
- 「ローカルでの再生に関するセキュリティ」を「ネットワークにのみアクセスする」に設定して SWF ファイルをコンパイルする必要があります。
- このコード例が動作するには、ポート 8080 を使用して、ドメイン名上で実行しているサーバーが必要です。
- Flash Player 9.0.124.0 以降のバージョンを実行しているときは、ドメインからポート 8080 へのソケット接続を許可するソケットポリシーファイルをサーバー上に置く必要があります。ソケットポリシーファイルの提供については、Flash Player デベロッパーセンターのトピックソケットポリシーファイルサーバーの設定を参照してください。
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); } } }
Tue Jun 12 2018, 10:34 AM Z