IOWebSocketChannel.connect constructor
Creates a new WebSocket connection.
Connects to url
using WebSocket.connect and returns a channel that can
be used to communicate over the resulting socket. The url
may be either
a String or a Uri. The protocols
and headers
parameters are the
same as WebSocket.connect.
pingInterval
controls the interval for sending ping signals. If a ping
message is not answered by a pong message from the peer, the WebSocket is
assumed disconnected and the connection is closed with a goingAway
code.
When a ping signal is sent, the pong message must be received within
pingInterval
. It defaults to null
, indicating that ping messages are
disabled.
If there's an error connecting, the channel's stream emits a WebSocketChannelException wrapping that error and then closes.
Implementation
factory IOWebSocketChannel.connect(url,
{Iterable<String> protocols,
Map<String, dynamic> headers,
Duration pingInterval}) {
var channel;
var sinkCompleter = new WebSocketSinkCompleter();
var stream = StreamCompleter.fromFuture(
WebSocket.connect(url.toString(), headers: headers).then((webSocket) {
webSocket.pingInterval = pingInterval;
channel._webSocket = webSocket;
sinkCompleter.setDestinationSink(new _IOWebSocketSink(webSocket));
return webSocket;
}).catchError((error) => throw new WebSocketChannelException.from(error)));
channel = new IOWebSocketChannel._withoutSocket(stream, sinkCompleter.sink);
return channel;
}