Commit Graph

6 Commits

Author SHA1 Message Date
sethladd@google.com 7ea77891bb specify which version of web sockets
BUG=
TEST=

Review URL: https://chromiumcodereview.appspot.com//10535168

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@8666 260f80e4-7a28-3924-810f-c04153c831b5
2012-06-14 16:08:51 +00:00
sgjesse@google.com f861f1c2a0 Add a hash code to client and server web socket connections
The client web socket connection uses part of the nonce generated for
the challenge. The server web socket connection uses the hash code
from the socket.

R=ager@google.com

BUG=dart:3017
TEST=tests/standalone/io/web_socket_test.dart

Review URL: https://chromiumcodereview.appspot.com//10377124

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@7613 260f80e4-7a28-3924-810f-c04153c831b5
2012-05-14 15:53:28 +00:00
sgjesse@google.com a579f1f449 Implemented W3C complient web socket client interface
Fixed a bug where onMessage events could happen before the onOpen event.

R=ager@google.com, ajohnsen@google.com, vsm@google.com, jacobr@google.com

BUG=dart:2001
TEST=tests/standalone/io/web_socket_test.dart

Review URL: https://chromiumcodereview.appspot.com//10383039

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@7440 260f80e4-7a28-3924-810f-c04153c831b5
2012-05-09 08:47:07 +00:00
sgjesse@google.com a108ef203f Add a web socket client
The web socket client is a implemented as a class which is
created from from a HTTP client connection. This way it is
independent from the HTTP client and is just using the HTTP
client.

The protocol handling is mainly re-using the code from the web
socket server.

Change the handling of setting an onNoPendingWrites handler on a
socket output stream. Now setting a new onNoPendingWrites handler
will trigger a callback when there is no pending data to be
written.

Add socket detaching to the HTTP client as well. Add the ability
to get any unparsed data read from the socket for processing
after the protocol upgrade.

R=ager@google.com, ajohnsen@google.com, vsm@google.com, jacobr@google.com

BUG=dart:2001
TEST=tests/standalone/io/web_socket_test.dart

Review URL: https://chromiumcodereview.appspot.com//10262031

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@7224 260f80e4-7a28-3924-810f-c04153c831b5
2012-05-02 10:30:38 +00:00
ager@google.com 45ee70403f Add websocket files to dummy io.dart implementation for dart2js.
Apparently this file is also used for generating API documentation
now. We need to move away from that and generate the API documentation
from the io_runtime.dart file in the SDK. The dummy implementation
file is not automatically updated and therefore this will keep
breaking.

R=ahe@google.com,rnystrom@google.com
BUG=
TEST=

Review URL: https://chromiumcodereview.appspot.com//10254001

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@7063 260f80e4-7a28-3924-810f-c04153c831b5
2012-04-27 09:30:49 +00:00
sgjesse@google.com f4a87d0e2e Initial web socket server implementation
This implements the web socket protocol as a request handler for
the HTTP server. The HTTP server have been updated with the
ability of getting the socket when a HTTP upgrade request is
processed. This way the web socket implementation is not builtin
to the HTTP server.

The API on the server is:

interface WebSocketConnection {
  void set onMessage(void callback(Object message));
  void set onClosed(void callback(int status, String reason));
  void set onError(void callback(e));

  send(Object message);
  close([int status, String reason]);
}

This API currently does not have any streaming but collects the
entire message before invoking the onMessage callback. The
current browser web socket API
(http://dev.w3.org/html5/websockets/) works the same way. The
underlying web socket protocol can have unbounded messages so
long term this probably have to change. But for now the only
likely client for a web socket server is a browser.

Currently this is missing tests. The implementation has been
tested by running the WebSocketTest.dart script and connecting
using a browser. This testing have been done using Chrome 19 and
Firefox 11.

I will be adding tests in separate change lists.

The SHA-1 and base 64 code (initially written by
ajohnsen@google.com) can be removed when these algorithms is
available in the dart:crypto.

R=ager@google.com, ajohnsen@google.com, vsm@google.com, jacobr@google.com

BUG=dart:2001
TEST=none

Review URL: https://chromiumcodereview.appspot.com//10205012

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@6998 260f80e4-7a28-3924-810f-c04153c831b5
2012-04-26 10:15:30 +00:00