U E D R , A S I H C RSS

html5/communicationAPI

1. ปค๋ฎค๋‹ˆผ€ด…˜ API


  • ”„๋กœ๊ทธ๋žจ๊ฐ„— ๋น„๋™‹œผ๋กœ ๋ฉ”„ง€  „๋‹ฌ : ๋АŠจ•œ ๊ฒฐ•ฉ(loosely coupled)
  • ๋ฉ”„ง€ : ž„˜˜ ž๋ฐ”Šคฌ๋ฆฝŠธ๊ฐฒด ๋˜๋Š” ๋‹จˆœ ๋ฌธž—ด
  • †ต‹  ˆ˜–‰˜ ฃผฒด : œˆ๋„šฐ, ๋ฐ๊ทธ๋ผšด๋“œ ƒœŠคฌ, „œ๋ฒ„—„œ ๋™ž‘•˜๋Š” ”„๋กœ๊ทธ๋žจ

  • ๋ฉ”„ง€ ด๋ฒคŠธ : ž๋ฐ”Šคฌ๋ฆฝŠธ ๊ฐฒด ( data, origin, lastEventid, source, ports)

  • ๋ฉ”„ง€ ˆ˜‹  : onmessageด๋ฒคŠธ •ธ๋“ค๋Ÿฌ, ด๋ฒคŠธ ๋ฆฌŠค๋„ˆ (MessageEvent๊ฐฒด –ปŒ)

2. ฌ๋กœŠค ๋„๋จผŠธ ๋ฉ”„ง•

  • ๋ฉ”„ง€˜ †กˆ˜‹ „ †ต•ด ๋‘˜ ดƒ˜ ›Ž˜ดง€๊ฐ€ „œ๋กœ ๋ฐด„ฃผ๊ณ ๋ฐ›Œ
  • ๋„๋ฉ”ธด ๋‹ค๋ฅธ ›Ž˜ดง€๋„ ๋ฐด„ฐ ๊ณตœ ๊ฐ€๋Šฅ

  • †ก‹  : postMessage(data, ports, targetOrigin)
  • ˆ˜‹  : onmessage() ด๋ฒคŠธ •ธ๋“ค๋Ÿฌ

  • postMessage(data, ports, targetOrigin)
    • data : ž„˜˜ ž๋ฐ”Šคฌ๋ฆฝŠธ ๊ฐฒด
    • ports : messagePort๊ฐฒด, ƒ๋žต๊ฐ€๋Šฅ
    • targetOrigin : ๋ฉ”„ง€๋ฅผ ˆ˜‹ •˜๋Š” ๋„๋ฉ”ธ(”„๋กœ† ฝœ+๋„๋ฉ”ธ+ฌŠธ๋ฒˆ˜ธ)
  • ๋ณด•ˆ„ œ„•ด ๋ฉ”„ง€๋ฅผ ฃผ๊ณ ๋ฐ›๋Š” ƒ๋Œ€˜ ‹ › ™•ธ •„ˆ˜

  • onMessage ด๋ฒคŠธ •ธ๋“ค๋Ÿฌ

  // ๋ฉ”„ง€๋ฅผ ˆ˜‹ •ด MessageEvent˜•˜ ๊ฐฒด –ปŒ
  window.onmessage = function(e) {
   // origin †„œผ๋กœ๋ถ€„†ก‹ ฒ˜ ™•ธ
   if(e.origin == "http://localhost"){
      // data †„œผ๋กœ ˆ˜‹ ๋œ ๋ฉ”„ง€ ™•ธ
       alert(e.data);
   }
 };

  • ด๋ฒคŠธ ๋ฆฌŠค๋„ˆ

  // ๋ฉ”„ง€๋ฅผ ˆ˜‹ •ด MessageEvent˜•˜ ๊ฐฒด –ปŒ
  window.addEventListener("message", function(e) {
     ....
   }, false);

  • ๋ฉ”„ง€ †ก‹  ˜ˆ

 var destFrame = document.getElementById("message-dest");
 destFrame.contentWindow.postMessage("๋ฉ”„ง€ ๋‚ดšฉ", /*ฌŠธ ƒ๋žต๊ฐ€๋Šฅ*,/ "http://desc.example.com"); 

3. „„ ๋ฉ”„ง•

  • ๋‹ค๋Œ€๋‹ค ๋ฉ”„ง€ †ต‹ „ ‹ค˜„•˜๊ธฐ œ„•œ API
  • „„ : ๋ฉ”„ง€ †ก,ˆ˜‹ „ ค‘๊ฐœ•˜๋Š” ๊ฐฒด, MessageChannel˜•
  • MessageChannel : ๋‘๊ฐœ˜ ฌŠธ๊ฐ€ง ฌŠธ1 -> ฌŠธ2, ฌŠธ2 -> ฌŠธ1
  • ฌŠธ : MessagePort๊ฐฒด
    • start() : ฌŠธ๋ฅผ ดšฉ•  ˆ˜ žˆ๋„๋ก •œ๋‹ค. „„ ๋ฉ”„ง• ˆ˜–‰‹œ ๊ฐ๊ฐ˜ ฌŠธ— ๋Œ€•ด start()๋ฅผ ˜ธถœ
    • close() : ฌŠธ๋ฅผ ‚ฌšฉ•  ˆ˜ —†๊ฒŒ •จ
    • postMessage(message, ports) : ๋ฉ”„ง€ †ก‹ 
    • onmessage : ๋ฉ”„ง€ ๋„ฐฉ‹œ ด๋ฒคŠธ •ธ๋“ค๋Ÿฌ๊ฐ€ ˜ธถœ๋จ

  • „„„ ดšฉ•œ ๋ฉ”„ง€ †ก‹ 

 // ƒ๋žต๊ฐ€๋Šฅ
 channel.port1.start(); 
 channel.port2.start();
 // ฌŠธ๋ฅผ ดšฉ•œ ๋ฉ”„ง€ †ก‹  
 channel.port1.postMessage("TEST");

4. ฌŠธ ๊ณต๊ฐœ

  • ฌŠธ๋ฅผ †ก‹ •˜—ฌ ˆ˜‹ ž๊ฐ€ †ก‹ ž˜ ฌŠธ— ง ‘  ‘๊ทผ•  ˆ˜ žˆ๊ฒŒ•จ
  • ฌŠธ๋Š” ๊ฐ’ ๋ณต‚ฌ๋กœ  „๋‹ฌ๋จ
  • ๋ฐ›€ ฌŠธ๋Š” PostMessgae()˜ portsธž— ๋ฐฐ—ด ˜•ƒœ๋กœ  „๋‹ฌ๊ฐ€๋Šฅ
    • ฃผ˜ : ๋ฐฐ—ด•ˆ— nullด ฌ•จ๋  ๋•Œ, ด „— postMessage()˜ ธˆ˜๋กœ  „๋‹ฌ๋œ  ด žˆ๋Š” ฌŠธ๊ฐ€ ฌ•จ๋  ๋•Œ, •œ „„˜ ฌŠธ1๊ณผ ฌŠธ2๊ฐ€ ๋™‹œ— ฌ•จ๋  ๋•Œ

5. ๊ด€๋ จ ‚ฌดŠธ

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:31:40
Processing time 0.0174 sec