| /* |
| * Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file |
| * for details. All rights reserved. Use of this source code is governed by a |
| * BSD-style license that can be found in the LICENSE file. |
| */ |
| /** |
| * @assertion |
| * Future<WebSocket> connect( |
| * String url, { |
| * Iterable<String> protocols, |
| * Map<String, dynamic> headers, |
| * CompressionOptions compression: CompressionOptions.compressionDefault |
| * }) |
| * 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. |
| * 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. |
| * If the url contains user information this will be passed as basic |
| * authentication when setting up the connection. |
| * @description Checks that the static method WebSocket.connect creates a new |
| * Future that will complete with WebSocket. Tests methods and properties of |
| * created instance (error processing) |
| * @author a.semenov@unipro.ru |
| */ |
| import "dart:async"; |
| import "dart:io"; |
| import "../http_utils.dart"; |
| |
| import "allTests_A02.lib.dart"; |
| |
| Future<Stream> create<T>(Iterable<T> data, {bool Function(T element) isError}) async { |
| HttpServer server; |
| server = await spawnWebSocketServer((WebSocket ws) { |
| data.forEach((T x) { |
| if (isError != null && isError(x)){ |
| ws.addError(x); |
| } else { |
| ws.add(x); |
| } |
| }); |
| ws.close(WebSocketStatus.normalClosure).then((_) { |
| server.close(); |
| }); |
| }); |
| return WebSocket.connect("ws://${server.address.address}:${server.port}/"); |
| } |
| |
| main() { |
| test(create); |
| } |