[whatwg] workers
Chris Prince
cprince at google.com
Mon Sep 15 07:52:12 PDT 2008
I like this a lot. +1 to making connect() always explicit. Implicit
creation of ports led to many rough edges.
I think your proposal nearly works for window.postMessage() too. If
you move 'onconnect' and 'connect()' into a MessageReceiver interface
[better name TBD], and make Worker and Window both inherit from
MessageReceiver, do you end up with a unified messaging model?
On Mon, Sep 15, 2008 at 5:56 AM, Aaron Boodman <aa at google.com> wrote:
> 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
>
More information about the whatwg
mailing list