connectRSocket function

Future<DuplexConnection> connectRSocket(
  1. String url,
  2. TcpChunkHandler handler,
  3. SocketClosedCallback? socketClosedCallback, {
  4. Duration? connectTimeout,
})

Implementation

Future<DuplexConnection> connectRSocket(String url, TcpChunkHandler handler,
    SocketClosedCallback? socketClosedCallback,
    {Duration? connectTimeout}) async {
  var uri = Uri.parse(url);
  var scheme = uri.scheme;
  if (scheme == 'tcp') {
    var socketFuture = Socket.connect(uri.host, uri.port);
    return socketFuture.then((socket) => TcpDuplexConnection(socket));
  }
  if (scheme == 'ws' || scheme == 'wss') {
    final websocket = await WebSocketChannel.connect(
      Uri.parse(url),
      connectTimeout: connectTimeout,
    );

    return WebSocketDuplexConnection(websocket,
        socketClosedCallback: socketClosedCallback);
  } else {
    return Future.error('${scheme} unsupported');
  }
}