- From: Aaron Boodman <aa@google.com>
- Date: Mon, 15 Sep 2008 13:56:02 +0100
Thinking about this some more, having the "port" convenience
properties gets confusing when there are multiple clients sending
messages, and doesn't make a whole lot of sense with shared workers.
I think we should just get rid of these. It only adds one line of code
to the simple case. Also, I forgot 'onerror' in my last IDL proposal.
So here's an update:
OUTSIDE
interface MessagePort {
EventListener onmessage;
EventListener onclose;
void sendMessage(String message);
}
interface Worker {
EventListener onload; // informative only, you can sendMessage
before this happens
EventListener onerror; // only load errors, not script errors at runtime
Port connect();
};
interface DedicatedWorker : Worker {
void close();
};
INSIDE
interface WorkerContext {
EventListener onclose;
EventListener onmessage; // convenience -- receives all messages
sent to ports in this worker
EventListener onconnect; // fired each time connect() is called on
a corresponding Worker object
readonly String name;
void close();
// + all the utils stuffs
};
EXAMPLE USAGE
var worker = new Worker("foo.js");
var port = worker.connect();
port.onmessage = function(e) {
alert("worker says: " + e.message);
}
port.sendMessage("hi!");
// foo.js
self.onconnect = function(e) {
e.port.onmessage = function() {
e.port.sendMessage("bye");
}
}
// foo.js (alternate implementation)
self.onmessage = function(e) {
e.port.sendMessage("bye");
}
- a
Received on Monday, 15 September 2008 05:56:02 UTC