Index: sdk/lib/io/websocket.dart |
diff --git a/sdk/lib/io/websocket.dart b/sdk/lib/io/websocket.dart |
index 327ef3aafff218300dd82a20dcf20ac8326d8305..60414da3f03702036e7ab8ea3c12d72281e9a014 100644 |
--- a/sdk/lib/io/websocket.dart |
+++ b/sdk/lib/io/websocket.dart |
@@ -5,7 +5,7 @@ |
part of dart.io; |
/** |
- * Web socket status codes used when closing a web socket connection. |
+ * WebSocket status codes used when closing a WebSocket connection. |
*/ |
abstract class WebSocketStatus { |
static const int NORMAL_CLOSURE = 1000; |
@@ -49,7 +49,7 @@ abstract class WebSocketStatus { |
* |
* server.transform(new WebSocketTransformer()).listen((webSocket) => ...); |
* |
- * This transformer strives to implement web sockets as specified by RFC6455. |
+ * This transformer strives to implement WebSockets as specified by RFC6455. |
*/ |
abstract class WebSocketTransformer |
implements StreamTransformer<HttpRequest, WebSocket> { |
@@ -68,7 +68,7 @@ abstract class WebSocketTransformer |
/** |
* Upgrades a [HttpRequest] to a [WebSocket] connection. If the |
- * request is not a valid web socket upgrade request a HTTP response |
+ * request is not a valid WebSocket upgrade request an HTTP response |
* with status code 500 will be returned. Otherwise the returned |
* future will complete with the [WebSocket] when the upgrade pocess |
* is complete. |
@@ -125,13 +125,33 @@ abstract class WebSocket implements Stream, StreamSink { |
Duration pingInterval; |
/** |
- * Create a new web socket connection. The URL supplied in [url] |
- * must use the scheme [:ws:] or [:wss:]. The [protocols] argument is |
- * specifying the subprotocols the client is willing to speak. |
+ * Create a new WebSocket connection. The URL supplied in [url] |
+ * must use the scheme `ws` or `wss`. |
+ * |
+ * The [protocols] argument is specifying the subprotocols the |
+ * client is willing to speak. |
+ * |
+ * The [headers] argument is specifying additional HTTP headers for |
+ * setting up the connection. This would typically be the `Origin` |
+ * header and potentially cookies. The keys of the map are the header |
+ * fields and the values are either String or List<String>. |
+ * |
+ * If [headers] is provided, there are a number of headers |
+ * which are controlled by the WebSocket connection process. These |
+ * headers are: |
+ * |
+ * - `connection` |
+ * - `sec-websocket-key` |
+ * - `sec-websocket-protocol` |
+ * - `sec-websocket-version` |
+ * - `upgrade` |
+ * |
+ * If any of these are passed in the `headers` map they will be ignored. |
*/ |
static Future<WebSocket> connect(String url, |
- {List<String> protocols: const []}) => |
- _WebSocketImpl.connect(url, protocols); |
+ {Iterable<String> protocols, |
+ Map<String, dynamic> headers}) => |
+ _WebSocketImpl.connect(url, protocols, headers); |
@Deprecated('This constructor will be removed in Dart 2.0. Use `implements`' |
' instead of `extends` if implementing this abstract class.') |
@@ -168,33 +188,33 @@ abstract class WebSocket implements Stream, StreamSink { |
/** |
* The extensions property is initially the empty string. After the |
- * web socket connection is established this string reflects the |
+ * WebSocket connection is established this string reflects the |
* extensions used by the server. |
*/ |
String get extensions; |
/** |
* The protocol property is initially the empty string. After the |
- * web socket connection is established the value is the subprotocol |
+ * WebSocket connection is established the value is the subprotocol |
* selected by the server. If no subprotocol is negotiated the |
* value will remain [:null:]. |
*/ |
String get protocol; |
/** |
- * The close code set when the web socket connection is closed. If |
+ * The close code set when the WebSocket connection is closed. If |
* there is no close code available this property will be [:null:] |
*/ |
int get closeCode; |
/** |
- * The close reason set when the web socket connection is closed. If |
+ * The close reason set when the WebSocket connection is closed. If |
* there is no close reason available this property will be [:null:] |
*/ |
String get closeReason; |
/** |
- * Closes the web socket connection. Set the optional [code] and [reason] |
+ * Closes the WebSocket connection. Set the optional [code] and [reason] |
* arguments to send close information to the remote peer. If they are |
* omitted, the peer will see [WebSocketStatus.NO_STATUS_RECEIVED] code |
* with no reason. |
@@ -202,13 +222,13 @@ abstract class WebSocket implements Stream, StreamSink { |
Future close([int code, String reason]); |
/** |
- * Sends data on the web socket connection. The data in [data] must |
+ * Sends data on the WebSocket connection. The data in [data] must |
* be either a [:String:], or a [:List<int>:] holding bytes. |
*/ |
void add(data); |
/** |
- * Sends data from a stream on web socket connection. Each data event from |
+ * Sends data from a stream on WebSocket connection. Each data event from |
* [stream] will be send as a single WebSocket frame. The data from [stream] |
* must be either [:String:]s, or [:List<int>:]s holding bytes. |
*/ |