Re: [whatwg] Web Workers: include simple example for shared workers

2010-02-25 Thread Simon Pieters

On Tue, 23 Feb 2010 21:36:15 +0100, Simon Pieters sim...@opera.com wrote:


step 3.

test.html
pre id=logLog:/pre
script
var worker = new SharedWorker('test.js');
var log = document.getElementById('log');
worker.port.addEventListener('message', function(e) {
   log.textContent += '\n' + e.data;
}, false);
worker.port.start();
worker.port.postMessage('ping');
/script
iframe src=other.html/iframe

other.html
pre id=logInner log:/pre
script
var worker = new SharedWorker('test.js');
var log = document.getElementById('log');
worker.port.onmessage = function(e) {
   log.textContent += '\n' + e.data;
}
/script

test.js
onconnect = function(e) {
   var port = e.ports[0];
   port.postMessage('hello');
   port.onmessage = function(e) {
 port.postMessage('pong');
   }
}


The worker script could be modified in step 3 as follows to make it clear  
that the script is in fact shared:


test.js
var i = 0;
onconnect = function(e) {
  i++;
  var port = e.ports[0];
  port.postMessage('hello, ' + i);
  port.onmessage = function(e) {
port.postMessage('pong');
  }
}

--
Simon Pieters
Opera Software


Re: [whatwg] Web Workers: include simple example for shared workers

2010-02-25 Thread Simon Pieters
On Thu, 25 Feb 2010 18:58:37 +0100, Drew Wilson atwil...@google.com  
wrote:



BTW, I think it's valuable to point out in the example that
MessageEvent.target == the port that received the message (so we don't  
need

to use a closure as in the example below - just use
event.target.postMessage()).


Yes, I think using this.postMessage() should also work.

--
Simon Pieters
Opera Software