ãšã³ããªãŒ
æ¡åŒµæ©èœã®å©ããåããŠãæ°ããå°è±¡çãªæ©èœãäœæããŠOperaãã©ãŠã¶ãŒã«è¿œå ã§ããŸãã ä»ã®èšäºã§è¿°ã¹ãããã«ãOperaã®æ¡åŒµæ©èœã«ã¯ãããã¯ã°ã©ãŠã³ãã¹ã¯ãªãããåã蟌ã¿ã¹ã¯ãªãããããã³ãããã¢ãããå«ãŸããŠããŸãã ãã®èšäºã§ã¯ãããã3ã€ã®ã³ã³ããŒãã³ãéã§ããŒã¿ã確å®ã«äº€æããæ¹æ³ã«ã€ããŠèª¬æããŸãã
ç¶è¡ããåã«ã3ã€ã®æ¡åŒµæ©èœãããŠã³ããŒããã Opera 11 alpha browserã«ã€ã³ã¹ããŒã«ããå¿
èŠããããŸãã ãããã®æ¡åŒµæ©èœã®ã³ãŒãã䜿çšããŠãããã¯ãæ€èšããŸãã
- ããã¯ã°ã©ãŠã³ãã¹ã¯ãªãããšåã蟌ã¿ã¹ã¯ãªããã®éã®ããŒã¿äº€æã瀺ãæ¡åŒµæ©èœã®äŸ
- ããã¯ã°ã©ãŠã³ãã¹ã¯ãªãããšãããã¢ããã®éã®ããŒã¿äº€æã瀺ãæ¡åŒµæ©èœã®äŸ
- ãããã¢ãããŠã£ã³ããŠãšåã蟌ã¿ã¹ã¯ãªããã®éã®ããŒã¿äº€æã瀺ãæ¡åŒµæ©èœã®äŸïŒããã¯ã°ã©ãŠã³ãã¹ã¯ãªããã®å°ãã®å©ããåããŠïŒ
ããã¯ã°ã©ãŠã³ãã¹ã¯ãªãããšåã蟌ã¿ã¹ã¯ãªããéã®ããŒã¿äº€æ
Operaã¯postMessageïŒïŒã¡ãœããã䜿çšããŠã¡ãã»ãŒãžãéä¿¡ããŸãã ããã¯ã°ã©ãŠã³ãã¹ã¯ãªããããåã蟌ã¿ã¹ã¯ãªããã«ããŒã¿ãéä¿¡ããå Žåã¯ãããã¯ã°ã©ãŠã³ãã¹ã¯ãªããã§æ¬¡ã®ã³ãŒããèšè¿°ããå¿
èŠããããŸãã
opera.extension.broadcastMessage("Hello there");
ã¡ãã»ãŒãžãéä¿¡ããåŸãæ¿å
¥ãããã¹ã¯ãªããã¯ãããåãå
¥ããå¿
èŠããããŸããããã¯æ¬¡ã®ããã«å®è¡ã§ããŸãã
var thecatch; opera.extension.onmessage = function(event) { thecatch = event.data;
ãšãŠãç°¡åã§ãã äžèšã®ã³ãŒãã§ã¯ãããã¯ã°ã©ãŠã³ãã¹ã¯ãªããã¯broadcastMessageã¡ãœããã䜿çšããŠåã蟌ã¿ã¹ã¯ãªããã«ããŒã¿ãéä¿¡ããåã蟌ã¿ã¹ã¯ãªããã¯ããããåä¿¡ããŸãã ããŒã¿ãåä¿¡ããåŸãcatchå€æ°ã«ä¿åããŸãã broadcastMessageã¡ãœããã䜿çšããŠããã¹ãŠã®åã蟌ã¿ã¹ã¯ãªãããšãããã¢ããã«ã¡ãã»ãŒãžãéä¿¡ããããããã®ã¡ãœããã¯æ
éã«äœ¿çšããå¿
èŠãããããšã«æ³šæããŠãã ããã éåžžãpostMessageã¡ãœãããŸãã¯ã¡ãã»ãŒãžãã£ãã«ã䜿çšããŠã1ã€ã®ãããã¢ãããŠã£ã³ããŠãŸãã¯åã蟌ã¿ã¹ã¯ãªããïŒæ¡åŒµæ©èœã«å«ãŸããã¹ã¯ãªããïŒã®ã¿ã«ã¢ã¯ã»ã¹ããå¿
èŠããããŸãã
ãããæåã®ãã¹ãã±ãŒã¹ã§ç€ºããŸãã
ããã¯ã°ã©ãŠã³ãã¹ã¯ãªããã«ã¯ãsetupConnectioné¢æ°ãåŒã³åºãããŒãã€ãã³ãããã¯ããããŸãã ãšã©ãŒã³ã³ãœãŒã«ïŒ[ããŒã«]> [詳现èšå®]> [ãšã©ãŒã³ã³ãœãŒã«]ïŒã§opera.postErrorã¡ãœããã®åºåã確èªã§ããŸãã
window.addEventListener("load", setupConnection, false); function setupConnection() {
次ã®ã³ãŒãã«æ³šæããŠãã ããã
opera.extension.onconnect = function(event) { event.source.postMessage("something"); opera.postError("sent message to injected script"); }
onconnectã¡ãœããã¯ãããã¥ã¡ã³ãã§åã蟌ã¿æ¡åŒµã¹ã¯ãªãããã¢ã¯ãã£ãåãããããã¯ã°ã©ãŠã³ãã¹ã¯ãªããã«æ¥ç¶ããããšå®è¡ãããŸãã ã€ãŸããæ¿å
¥ãããã¹ã¯ãªãããããŒãããããšããã«ãonconnectã¡ãœãããå®è¡ãããŸãã
ããã¯ã°ã©ãŠã³ãã¹ã¯ãªããã®onconnectãã³ãã©ãŒã¯ãevent.sourceãªããžã§ã¯ããä»ããŠæ¿å
¥ãããã¹ã¯ãªãããžã®ãªã³ã¯ãååŸããŸãã event.source.postMessageïŒïŒã¡ãœããã䜿çšããŠæååãsomethingããéä¿¡ããããšã§ç€ºãããããã«ããã®ã¡ãã»ãŒãžããŒãã¯åã蟌ã¿ã¹ã¯ãªãããšã®çŽæ¥éä¿¡ã«äœ¿çšã§ããŸãã éäžã§ããšã©ãŒã³ã³ãœãŒã«ã«å°ããªéç¥ãéä¿¡ããŠãäœãèµ·ãã£ãŠãããã远跡ããŸãã
ããã¯ã°ã©ãŠã³ãã¹ã¯ãªããããã°ãããã®ãŸãŸã«ããŠãå®è£
ãããŠããã¹ã¯ãªããã«æ³šæãåããŸãã
opera.extension.onmessage = function(event){
onmessageã¡ãœããã¯ãåã蟌ã¿ã¹ã¯ãªãããã¡ãã»ãŒãžãåä¿¡ãããšåŒã³åºãããŸãã ã¡ãã»ãŒãžã®å
容ãã¡ãã»ãŒãžå€æ°ã«ä¿åããŸãã 次ã«ãopera.postErrorã¡ãœããã䜿çšããŠããšã©ãŒã³ã³ãœãŒã«ã«éç¥ãéä¿¡ããŸãã
ã¡ãã»ãŒãžã®åä¿¡ã確èªããããã«ãevent.sourceãªããžã§ã¯ãã䜿çšããŠããã¯ã°ã©ãŠã³ãã¹ã¯ãªããã«æ»ãå¿çãéä¿¡ããŸãã èŠç¢ºèªïŒevent.sourceã¯åžžã«ã¡ãã»ãŒãžã®ãœãŒã¹ãæããŸãã
ãã®ãããåã蟌ã¿ã¹ã¯ãªããã«ããã¡ãã»ãŒãžã®åä¿¡æ¹æ³ãšãå¿çãããã¯ã°ã©ãŠã³ãã¹ã¯ãªããã«éä¿¡ããæ¹æ³ã確èªããŸããã
次ã®ã¹ãããã¯ãããã¯ã°ã©ãŠã³ãã¹ã¯ãªããã§ã¡ãã»ãŒãžãåä¿¡ããŠââåŠçããããšã§ãã ããã¯ã°ã©ãŠã³ãã¹ã¯ãªããã«æ»ããå¥ã®ã³ãŒããèŠãŠã¿ãŸãããã
ããã§ãã¡ãã»ãŒãžãåä¿¡ããæç¹ã§ãã¹ã¯ãªããã¯ã¡ãã»ãŒãžã®å
容ãšãšãã«ãã®åä¿¡ã«ã€ããŠãšã©ãŒã³ã³ãœãŒã«ã«éç¥ãéä¿¡ããŸãã
ãããæ¡åŒµæ©èœã§èµ·ããããšã§ãïŒ
- ããã¯ã°ã©ãŠã³ãã¹ã¯ãªããã¯ãåã蟌ã¿ã¹ã¯ãªããã«ã¡ãã»ãŒãžãéä¿¡ããŸã
- æ¿å
¥ãããã¹ã¯ãªããã¯ã¡ãã»ãŒãžãåä¿¡ããã¡ãã»ãŒãžã®å
容ãå«ãéç¥ããšã©ãŒã³ã³ãœãŒã«ã«éä¿¡ããŸã
- æ¿å
¥ãããã¹ã¯ãªããã¯å¿çãè¿ããŸã
- ããã¯ã°ã©ãŠã³ãã¹ã¯ãªããã¯å¿çãåä¿¡ããå¿çã®å
容ãå«ãéç¥ããšã©ãŒã³ã³ãœãŒã«ã«éä¿¡ããŸã
æ¡åŒµæ©èœãã€ã³ã¹ããŒã«ããå ŽåïŒåã蟌ã¿ã¹ã¯ãªãããé©çšãããããã«ããŒãžãæŽæ°ããå ŽåïŒããšã©ãŒã³ã³ãœãŒã«ã«ç§»åããŸãã å³ã«ç€ºãã¡ãã»ãŒãžã衚瀺ãããŸãã 1ïŒ
å³1 ïŒæ¡åŒµæ©èœããéä¿¡ããããšã©ãŒã³ã³ãœãŒã«ãšéç¥ã
ããã¯ã°ã©ãŠã³ãã¹ã¯ãªãããšåã蟌ã¿ã¹ã¯ãªãããã¡ãã»ãŒãžãéåä¿¡ããæ¹æ³ã調ã¹ãŸããã 次ã«ããããã¢ãããŠã£ã³ããŠã䜿çšããŠãããè¡ãæ¹æ³ãèŠãŠã¿ãŸãããã
ãããã¢ããã¹ã¯ãªãããšããã¯ã°ã©ãŠã³ãã¹ã¯ãªããéã®ã¡ãã»ãŒãžã³ã°
ãã®ç« ã§ã¯2çªç®ã®æ¡åŒµäŸã䜿çšããŸãã includeãã©ã«ããŒãšãã®äžã«åã蟌ãŸããã¹ã¯ãªããã¯ãªãããšã«æ³šæããŠãã ãã-ããã¯åãªãããã¯ã°ã©ãŠã³ãã¹ã¯ãªãããhtmlãã¡ã€ã«ãconfig.xmlãããã³ã¢ã€ã³ã³ã§ãã
åã®èšäºãã
ãbuttonãªã©ã®UIèŠçŽ ãäœæããæ¹æ³
ãæ¢ã«ç¥ã£ãŠããã®ã§ãããã«çŠç¹ãåãããŸããã background.jsã®æ¬¡ã®ã³ãŒããèŠãŠã¿ãŸãããã
opera.extension.onconnect = function(event){ event.source.postMessage("sending something"); opera.postError("sent message to popup"); }
åã®äŸãããããããã«ãããã¯ã°ã©ãŠã³ãã¹ã¯ãªããïŒãã®å Žåã¯ãããã¢ãããŠã£ã³ããŠïŒã«äœããæ¥è§Šãããšããã®ã³ãŒããå®è¡ãããŸãã ãã®é¢æ°ã¯ããšã©ãŒã³ã³ãœãŒã«ã§ãããã¢ãããŠã£ã³ããŠã«ãäœããéä¿¡ããŠããŸããã¡ãã»ãŒãžãšããããã¢ããã«éä¿¡ãããã¡ãã»ãŒãžãéç¥ãéä¿¡ããŸãã
次ã«ããããã¢ããããŒãžãèŠãŠãã ããã
<script> window.addEventListener("load", function(){ opera.extension.onmessage = function(event){ event.source.postMessage("do whatever you want with this message"); opera.postError("sent from popup to background script"); } }, false); </script>
ããã§ã¯ãçä¿¡ã¡ãã»ãŒãžãã€ã³ã¿ãŒã»ããããå¿çããœãŒã¹ã«éãè¿ããŸãã ãŸããéåžžã©ããããšã©ãŒã³ã³ãœãŒã«ã«éç¥ãéä¿¡ããŸãã ããã§ããããã¢ãããŠã£ã³ããŠãã¡ãã»ãŒãžãåãåããããã¯ã°ã©ãŠã³ãã¹ã¯ãªããã«åçãéä¿¡ããŸãã ããã¯ã°ã©ãŠã³ãã¹ã¯ãªããã§ãã®çããååŸããã ãã§ãã
åã³background.jsã«ã¢ã¯ã»ã¹ããŠãã³ãŒãã確èªããŸãã
opera.extension.onmessage = function(event){ opera.postError("This is what I got from injected script: " + event.data); }
ããã§ãããã¯ã°ã©ãŠã³ãã¹ã¯ãªããã¯ã¡ãã»ãŒãžãã€ã³ã¿ãŒã»ããããã¡ãã»ãŒãžã®å
容ãå«ãéç¥ããšã©ãŒã³ã³ãœãŒã«ã«éä¿¡ããŸãã ã芧ã®ãšãããåã蟌ã¿ã¹ã¯ãªããã®å Žåãšåãã³ãŒãã䜿çšã§ããŸãã
ãããæ¡åŒµæ©èœã§èµ·ããããšã§ãïŒ
- ããã¯ã°ã©ãŠã³ãã¹ã¯ãªããã¯ãããã¢ããã«ã¡ãã»ãŒãžãéä¿¡ããŸã
- ãããã¢ãããŠã£ã³ããŠãã¡ãã»ãŒãžãåä¿¡ããã¡ãã»ãŒãžã®å
容ãå«ãéç¥ããšã©ãŒã³ã³ãœãŒã«ã«éä¿¡ããŸã
- ãããã¢ããã¯å¿çãéãè¿ããŸã
- ããã¯ã°ã©ãŠã³ãã¹ã¯ãªããã¯å¿çãåä¿¡ããå¿çã®å
容ãå«ãéç¥ããšã©ãŒã³ã³ãœãŒã«ã«éä¿¡ããŸã
ãã¹ãŠã¯åã®äŸãšãŸã£ããåãæ¹æ³ã§è¡ãããŸãããå¯äžã®éãã¯åã蟌ã¿ã¹ã¯ãªããããªãããããã¢ãããŠã£ã³ããŠã«ã¢ã¯ã»ã¹ããããšã§ãã
æ¡åŒµæ©èœãã€ã³ã¹ããŒã«ããå Žåã¯ããã©ãŠã¶ãŒããã«ã®ãã¿ã³ãã¯ãªãã¯ããŠã¡ãã»ãŒãžã³ã°ãéå§ãããšã©ãŒã³ã³ãœãŒã«ãéããŠå³ã«ç€ºããã®ã衚瀺ããŸãã 2ïŒ
å³2 ïŒãšã©ãŒã³ã³ãœãŒã«ãšæ¡åŒµæ©èœããéä¿¡ãããéç¥ã
ãããã¢ãããšåã蟌ã¿ã¹ã¯ãªããéã®ã¡ãã»ãŒãžã³ã°
次ã«ããããã¢ãããŠã£ã³ããŠãšåã蟌ã¿ã¹ã¯ãªããã®éã§ããŒã¿ã亀æããæ¹æ³ãèŠãŠã¿ãŸãããã ããã¯ã°ã©ãŠã³ãã¹ã¯ãªããã¯æ¥ç¶ã®åæåã«ã®ã¿äœ¿çšããããããã¢ãããŠã£ã³ããŠãšåã蟌ã¿ã¹ã¯ãªããã¯çŽæ¥éä¿¡ããŸãã
ãããå®çŸããã«ã¯ãéä¿¡ãã£ãã«ãäœæããŸãã æ¡åŒµæ©èœã§ã®ã¡ãã»ãŒãžã³ã°ã®åºç€ã§ãã
HTML5ã®ã¯ãã¹ããã¥ã¡ã³ãã¡ãã»ãŒãžã³ã°ä»æ§ã§ãéä¿¡ãã£ãã«ã®è©³çŽ°ãåŠã¶ããšãã§ããŸãã
3çªç®ã®æ¡åŒµäŸã§ãããèŠãŠãããŸãã®ã§ãããã¹ããšãã£ã¿ãŒãèµ·åããŠã³ãŒããèŠãŠãã ããã ãŸããããã¯ã°ã©ãŠã³ãã¹ã¯ãªãããèŠãŠãã ããã ãã¿ã³ããããã¢ããã®è¿œå ãªã©ãããªãã¿ã®èŠçŽ ã«æ°ä»ãã§ãããã ãã£ãšèå³æ·±ããµã€ãã«è¡ããŸãããã
æåã«ãåŸã§äœ¿çšããã°ããŒãã«å€æ°ããŒããå®çŸ©ããŸãã onconnectãã³ãã©ãŒãèŠãŠã¿ãŸãããã
opera.extension.onconnect = function( event ){ if( port ) event.source.postMessage( "Respond to the port", [port] ); }
ããã¯ã°ã©ãŠã³ãã¹ã¯ãªãããžã®æ¥ç¶æã«ããããŒãã«å¿çããšããã¡ãã»ãŒãžãéä¿¡ãããŸãã ã¡ãã»ãŒãžãéä¿¡ããããŒããæå®ããŸãããããŒãå€æ°ã¯ãŸã éèŠã§ã¯ãªããããã¡ãã»ãŒãžã¯ãã®ãŸãŸéä¿¡ãããŸãã
次ã«ãå®è£
ãããŠããã¹ã¯ãªãããèŠãŠã¿ãŸãããã
var channel = new MessageChannel(); opera.extension.postMessage( "Respond to this immediately", [channel.port2] );
ããã§ãæ°ããã¡ãã»ãŒãžãã£ãã«ãäœæããŸãã ã¡ãã»ãŒãžãã£ãã«ã«ã¯2ã€ã®ããŒããããããããã®2ã€ã®ããŒããä»ããŠããŒã¿ãéåä¿¡ã§ããŸãã ããã§ã¯ã2çªç®ã®ããŒããä»ããŠããŒã¿ãéä¿¡ããæåã®ããŒããä»ããŠåä¿¡ããŸãã 次ã«ãã¡ãã»ãŒãžãã£ãã«ã®2çªç®ã®ããŒããä»ããŠpostMessageïŒïŒã¡ãœããã䜿çšããŠã¡ãã»ãŒãžãéä¿¡ããŸãã
ããã¯ã°ã©ãŠã³ãã¹ã¯ãªããã«æ»ããŸãããã
opera.extension.onmessage = function( event ) { if (event.ports) port = event.ports[0]; }
ããã¯ã°ã©ãŠã³ãã¹ã¯ãªããã¯ãåã蟌ã¿ã¹ã¯ãªããããã¡ãã»ãŒãžãåãåããŸãã ããã§ã2çªç®ã®ãã£ãã«ããŒããžã®ãªã³ã¯ã¯event.ports [0]ãªããžã§ã¯ããä»ããŠã¢ã¯ã»ã¹ã§ããããŒãå€æ°ã«æ ŒçŽãããŸãã ããã§ãããã¯ã°ã©ãŠã³ãã¹ã¯ãªããã§ãããã¢ãããŠã£ã³ããŠãæ¥ç¶ããæºåãã§ããŸããã ãããçºçãããšãonconnectã¡ãœãããå床åŒã³åºãããŸãã
opera.extension.onconnect = function( event ){ if( port ){ event.source.postMessage( "Respond to the port", [port] ); } }
çŸåšãããŒãå€æ°ã®å€ã¯ç©ºã§ã¯ãããŸããã ã¡ãã»ãŒãžãã£ãã«ããŒããžã®ãªã³ã¯ãå«ãŸããŠããŸãã
ãããã¢ãããã¡ã€ã«ãèŠãŠãã ããã
opera.extension.onmessage = function( event ){ if( event.ports ){ opera.postError( "Responding to port" ); event.ports[0].postMessage( "Hi from popups side!" ); } }
ãããã¢ãããŠã£ã³ããŠã¯ã¡ãã»ãŒãžãåãåããããŒããžã®ãªã³ã¯ãå«ãŸããŠããå Žåããšã©ãŒã³ã³ãœãŒã«ã«éç¥ãéä¿¡ããããã«éèŠãªããšãšããŠãæå®ãããããŒããä»ããŠå¿çãéä¿¡ããŸãã å®è£
ãããã¹ã¯ãªããã§ãã®ã¡ãã»ãŒãžãåä¿¡ããã ãã§ãã å®è£
ãããã¹ã¯ãªããã«ã¯ã次ã®ã³ãŒãããããŸãã
channel.port1.onmessage = function( event ){ opera.postError("Here is what i got in the injected script for port1: " + event.data); }
æ¿å
¥ãããã¹ã¯ãªããã¯ãã¡ãã»ãŒãžãã£ãã«ã®port1ã§ãªãã¹ã³ããŸãã ã¡ãã»ãŒãžãåä¿¡ãããšããããã¢ãããŠã£ã³ããŠããåä¿¡ããã¡ãã»ãŒãžã®å
容ãšãšãã«ãšã©ãŒã³ã³ãœãŒã«ã«éç¥ãéä¿¡ããŸãã
ãããæ¡åŒµæ©èœã§èµ·ããããšã§ãïŒ
- æ¿å
¥ãããã¹ã¯ãªãããããŒããããŠããŸãã
- onconnectã¡ãœããã¯ããã¯ã°ã©ãŠã³ãã¹ã¯ãªããã§å®è¡ãããåã蟌ã¿ã¹ã¯ãªããã«ã¡ãã»ãŒãžãéä¿¡ããŸãã
- æ¿å
¥ãããã¹ã¯ãªããã¯ã¡ãã»ãŒãžãåä¿¡ããã¡ãã»ãŒãžãã£ãã«ãäœæããŸãã
- æ¿å
¥ãããã¹ã¯ãªããã¯ã2çªç®ã®ããŒããžã®ãªã³ã¯ãšãšãã«ã¡ãã»ãŒãžãããã¯ã°ã©ãŠã³ãã¹ã¯ãªããã«éä¿¡ããŸãã
- ããã¯ã°ã©ãŠã³ãã¹ã¯ãªããã¯ã¡ãã»ãŒãžãåä¿¡ããããŒããžã®ãªã³ã¯ãä¿åããŸãã
- ãããã¢ãããŠã£ã³ããŠãããã¯ã°ã©ãŠã³ãã¹ã¯ãªããã«æ¥ç¶ããŸãã
- onconnectã¡ãœãããå床å®è¡ãããŸãããä»åã¯ãæ¿å
¥ãããŠããã¹ã¯ãªããã®ããŒããžã®ãªã³ã¯ãšãšãã«æ»ãã¡ãã»ãŒãžãéä¿¡ããŸãã
- ãããã¢ãããŠã£ã³ããŠã¯ã¡ãã»ãŒãžãåãå
¥ãããã®ããŒããžã®ãªã³ã¯ã確èªããŸãã ããå Žåããã®ããŒãïŒããã¯éä¿¡ãã£ãã«ã®ããŒã2ïŒã«æ»ãã¡ãã»ãŒãžãéä¿¡ããŸãã
- æ¿å
¥ãããã¹ã¯ãªããã¯ã¡ãã»ãŒãžãåãåããŸãã ãã®åŸã圌ã¯ãããã¢ãããŠã£ã³ããŠããåãåã£ãããã¹ããšå
±ã«ãšã©ãŒã³ã³ãœãŒã«ã«éç¥ãéä¿¡ããŸãã
ãã®ã·ããªãªã§ã¯ãããã¯ã°ã©ãŠã³ãã¹ã¯ãªããã¯ä»²äººãšããŠæ©èœããŸãã æåã«ã圌女ã¯æåã®ã¡ã³ããŒïŒæ¿å
¥ãããã¹ã¯ãªããïŒã«é£çµ¡ããŸãã åå è
ã¯èªåã®çªå·ïŒ2çªç®ã®ããŒãïŒã仲人ã«æž¡ãã仲人ã¯ãããä¿åããŸãã å¥ã®åå è
ïŒãããã¢ãããŠã£ã³ããŠïŒã仲人ã«é£çµ¡ããŸãã ãããçºçãããšã仲人ã¯æåã®åå è
ïŒåã蟌ã¿ã¹ã¯ãªããïŒã®çªå·ã2çªç®ã®åå è
ïŒãããã¢ãããŠã£ã³ããŠïŒã«éä¿¡ããŸãã ããã§ã2人ã®åå è
éã§ãã¹ãŠã®ã³ãã¥ãã±ãŒã·ã§ã³ãçŽæ¥è¡ããã仲人ãæ¹çšåŒããåé€ãããŸãã
ãŸãšãããš
onconnectããã³onmessageãã³ãã©ãŒã§postMessageã¡ãœããã䜿çšããæ¹æ³ãåŠãã åŸãæ¡åŒµæ©èœã®ããŸããŸãªéšåéã§ããŒã¿ã亀æããã®ã¯éåžžã«ç°¡åã§ãã ã¡ãã»ãŒãžãã£ãã«ã䜿çšããŠããŒã¿ã転éããããšãã§ããŸãããã®æ¹æ³ã¯ããããã¢ãããŠã£ã³ããŠãšåã蟌ã¿ã¹ã¯ãªããã®éã§ããŒã¿ã転éããå Žåã«å¿
èŠã§ãã ãã®èšäºã§ã¯ãããã¯ã°ã©ãŠã³ãã¹ã¯ãªãããšåã蟌ã¿ã¹ã¯ãªããã®éãããã¯ã°ã©ãŠã³ãã¹ã¯ãªãããšãããã¢ãããŠã£ã³ããŠã®éããããã¢ãããŠã£ã³ããŠãšåã蟌ã¿ã¹ã¯ãªããã®éã®3ã€ã®ã·ããªãªã§ããŒã¿è»¢éã«å°ãå
ãåœãŠãŸãã
APIãªã³ã¯
ããã¯ã°ã©ãŠã³ãã¹ã¯ãªããé¢é£ã®ã¡ãœãã
å®è£
ãããŠãã
ã¹ã¯ãªããã«é¢é£ããã¡ãœãã
ãããã¢ããã¡ãœãã