Forward protocols parameter to WebSocket (dart-lang/web_socket_channel#74)
Fixes dart-lang/web_socket_channel#34
diff --git a/pkgs/web_socket_channel/CHANGELOG.md b/pkgs/web_socket_channel/CHANGELOG.md
index d446637..dbd834f 100644
--- a/pkgs/web_socket_channel/CHANGELOG.md
+++ b/pkgs/web_socket_channel/CHANGELOG.md
@@ -1,3 +1,7 @@
+## 1.0.15
+
+* bug fix don't pass protocols parameter to WebSocket.
+
## 1.0.14
* Updates to handle `Socket implements Stream<Uint8List>`
diff --git a/pkgs/web_socket_channel/lib/io.dart b/pkgs/web_socket_channel/lib/io.dart
index 34c6bff..861b79f 100644
--- a/pkgs/web_socket_channel/lib/io.dart
+++ b/pkgs/web_socket_channel/lib/io.dart
@@ -54,8 +54,9 @@
Duration pingInterval}) {
var channel;
var sinkCompleter = WebSocketSinkCompleter();
- var stream = StreamCompleter.fromFuture(
- WebSocket.connect(url.toString(), headers: headers).then((webSocket) {
+ var stream = StreamCompleter.fromFuture(WebSocket.connect(url.toString(),
+ headers: headers, protocols: protocols)
+ .then((webSocket) {
webSocket.pingInterval = pingInterval;
channel._webSocket = webSocket;
sinkCompleter.setDestinationSink(_IOWebSocketSink(webSocket));
diff --git a/pkgs/web_socket_channel/pubspec.yaml b/pkgs/web_socket_channel/pubspec.yaml
index 6f7f490..71d8c19 100644
--- a/pkgs/web_socket_channel/pubspec.yaml
+++ b/pkgs/web_socket_channel/pubspec.yaml
@@ -1,5 +1,5 @@
name: web_socket_channel
-version: 1.0.14
+version: 1.0.15
description: >-
StreamChannel wrappers for WebSockets. Provides a cross-platform
diff --git a/pkgs/web_socket_channel/test/io_test.dart b/pkgs/web_socket_channel/test/io_test.dart
index f8f6325..ada0608 100644
--- a/pkgs/web_socket_channel/test/io_test.dart
+++ b/pkgs/web_socket_channel/test/io_test.dart
@@ -97,4 +97,39 @@
expect(channel.stream.toList(),
throwsA(TypeMatcher<WebSocketChannelException>()));
});
+
+ test(".protocols fail", () async {
+ var passedProtocol = 'passed-protocol';
+ var failedProtocol = 'failed-protocol';
+ var selector = (List<String> receivedProtocols) => passedProtocol;
+
+ server = await HttpServer.bind('localhost', 0);
+ server.listen((request) {
+ expect(WebSocketTransformer.upgrade(request, protocolSelector: selector),
+ throwsException);
+ });
+
+ var channel = IOWebSocketChannel.connect("ws://localhost:${server.port}",
+ protocols: [failedProtocol]);
+ expect(channel.stream.toList(),
+ throwsA(TypeMatcher<WebSocketChannelException>()));
+ });
+
+ test(".protocols pass", () async {
+ var passedProtocol = 'passed-protocol';
+ var selector = (List<String> receivedProtocols) => passedProtocol;
+
+ server = await HttpServer.bind('localhost', 0);
+ server.listen((request) async {
+ var webSocket = await WebSocketTransformer.upgrade(request,
+ protocolSelector: selector);
+ expect(webSocket.protocol, passedProtocol);
+ await webSocket.close();
+ });
+
+ var channel = IOWebSocketChannel.connect("ws://localhost:${server.port}",
+ protocols: [passedProtocol]);
+ await channel.stream.listen(null).asFuture();
+ expect(channel.protocol, passedProtocol);
+ });
}