PSVitaのブラウザからMiMicを使用する場合には、MiMicに追加スクリプトを加える必要があります。
MiMic_PSVita_patch.js
/** * This module does patch to loaded MiMic library for PSVita. * Load this module after MiMic library loaded. * MiMic will run on PSvita. * -- * このモジュールは、ロード済のMiMicJSAPIに、PSVita向けのパッチを適応して、PSVitaからMiMicを使用できるようにします。 * 以下のように、MiMicライブラリを読み込んだ後に、Javascriptを読み込んでください。 * @example * <script src="LPCXpresso1769.All.js"></script> * <script src="MiMic_PSVita_patch.js"></script> */ (function(){ function MiMicJsAPI_psVitaPatch() { MiMicRemoteMcuInterface.prototype._vita_tc=0; MiMicRemoteMcuInterface.prototype._vita_sc=0; //Xhrのコネクト前に、セッションIDの探索を実行する。 var old_connect=MiMicRemoteMcuInterface.prototype.connect; MiMicRemoteMcuInterface.prototype.connect=function psVitaConnect(i_callback) { try{ var _t=this; //接続中ならおわり if(this._keep_alive!=null){ return; } var sc; //探索(session counterに適当なidを付けて、成功するまでつなぎ変える。) var xhr = window.XDomainRequest ? new XDomainRequest() : new XMLHttpRequest(); for(var i=0;i<100;i++){ var pr=0; try{ sc=Math.floor( Math.random() * 0x4fffffff); xhr.open("GET","http://"+_t._mimic_host+"/status.api?sc="+sc,false); pr=1; xhr.send(null); pr=2; }catch(e){ if(pr==1){ //探索のやりなおし。 continue; } throw new MiMicException(e); } //みつかった this._vita_sc=sc; old_connect.call(this,i_callback); return; } //ミツカンネ throw new MiMicException("s2"); }catch(e){ throw new MiMicException(e); } } //Xhrに、カウンタ機能を追加する。 var oldmif=MiMicRemoteMcuInterface.prototype._xhrGet; MiMicRemoteMcuInterface.prototype._xhrGet=function psVitaConnect_xhrGet(i_url,i_async,i_callback) { var url=i_url; if(url.indexOf('?')==-1){ url+='?'; }else{ url+='&'; } //セッションidとメッセージidを追記する。 var r=oldmif.call(this,url+"sc="+this._vita_sc+"&tc="+this._vita_tc,i_async,i_callback); this._vita_tc++; return r; } } MiMicJsAPI_psVitaPatch(); }());
Download-> MiMic_PSVita_patch-0.1.0
仕組み
PSVitaでは、(たぶん不具合で)連続して同じURLにクロスドメインXmlHttpRequestを発行できません。そこで、MiMicCore.jsが、ユニークなURLでXmlHttpRequestを実行するように修正します。
サンプル
スクリプトは、MiMicライブラリをロードした直後に、次のように呼び出してください。
<html lang="ja" xmlns="http://www.w3.org/1999/xhtml"> <head> <script src="api.js/MiMicCore.js"></script> <script src="api.js/LPCXpresso1769.All-mini.js"></script> <script src="../../MiMic_PsVita_patch.js"></script> </head> : :
既知の問題
PS Vitaでは、連続でMiMicAPIをコールすると、100~300回目くらいから、頻繁に通信遅延が発生します。理由は恐らくブラウザにありますが、今のところ回避方法がありません。
Comments are closed, but trackbacks and pingbacks are open.