| // 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. |
| |
| // @dart = 2.9 |
| |
| /// @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) |
| /// @Issue 30920 |
| /// @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); |
| } |