私がこれを正しく理解している場合、おそらくサーバー側のコードを使用して、クライアントとの間でメッセージをやり取りする必要があります。
私の知る限り、SharedObject は同じページ上の 2 つの個別のフラッシュ インスタンス間で通信するためのものです。EDIT:リモート通信を利用できるAdobe Flash Media Severを実行している場合を除きます。
これは、php にデータを送信して何かを返す簡単な例です。サーバー側のロジックをカスタマイズして、必要に応じて機能させることができます。
これが超高速である必要がある場合は、PHP の代わりに Redis を使用して Node サーバーをセットアップすることを検討してください。
なので
function UserPressedEnter(event:KeyboardEvent, username:String, message:String):void {
var action:String = "http://www.mywebserver.com/save_messages.php";
var loader:URLLoader = new URLLoader();
loader.dataFormat = URLLoaderDataFormat.VARIABLES;
var request:URLRequest = new URLRequest(action);
request.method = URLRequestMethod.POST;
request.data = URLVariables({username:username, message:message});
loader.addEventListener(Event.COMPLETE, completeHandler);
loader.addEventListener(HTTPStatusEvent.HTTP_STATUS, httpResponseHandler);
loader.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
loader.addEventListener(ProgressEvent.PROGRESS, progressHandler);
loader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
loader.addEventListener(Event.OPEN, openHandler);
loader.load(request);
}
function completeHandler(event:Event):void {
trace("");
trace("******************************************** DATA RETRIEVED VIA OUTPUT RESPONSE *************************************************");
trace(event.target.data);
trace("*********************************************************************************************************************************");
trace("");
trace("Data returned by server: " + event.target.data);
ChatRoom.Text += "\n" + event.target.data.username + " : " + event.target.data.message;
var loader:URLLoader = event.target as URLLoader;
loader.removeEventListener(Event.COMPLETE, completeHandler);
loader.removeEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
loader.removeEventListener(HTTPStatusEvent.HTTP_STATUS, httpResponseHandler);
loader.removeEventListener(ProgressEvent.PROGRESS, progressHandler);
loader.removeEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
loader.removeEventListener(Event.OPEN, openHandler);
}
PHP (上記の「アクション」変数の「save_messages.php」)
<?php
//Flash will send out name/value pairs in a POST/GET (post recommended)
if (sizeof($_POST) > 0 || sizeof($_GET) > 0) {
//If the POST/GET header has elements set success to true and print out the elements
echo("success=true&");
//The following simply parrots the values back to flash. Instead of printing out the array you could set up a DB and have them inserted or set up a web proxy to send the data elsewhere.
foreach ($_POST as $pKey => $pValue) {
echo($pKey."=".$pValue."&");
}
foreach ($_GET as $gKey => $gValue) {
echo($gKey."=".$gValue."&");
}
}
else {
//If the POST/GET header does not contain any information set success to false.
echo("success=false&");
}
//Prints "complete" to let flash know the page has finished processing.
echo("complete=true");
//Flash will then read the echoed text which will be something like:
//success=true&NAME=VALUE&NAME2=VALUE2&complete=true;
//The "success" and "complete" vars are helpful in testing, please make sure they are accounted for.
?>