setupClient method

WebSocketChannel setupClient()

Implementation

WebSocketChannel setupClient() {
  if (_webSocketChannel != null) return _webSocketChannel!;
  final channel = WebSocketChannel.connect(Uri.parse(endpoint));
  channel.stream.listen(
    (event) {
      final data = jsonDecode(event);
      if (data["error"] != null) {
        streams[data["id"]]?.addError(data["error"]);
      } else if (data["id"] != null && data["result"] != null) {
        final reqId = data["result"];
        final subId = data["id"];
        subscriptionIdToRequestId[reqId] = subId;
        requestIdToSubscriptionId[subId] = reqId;
      } else {
        final subId = data["params"]["subscription"];
        final sm = streams[subscriptionIdToRequestId[subId]];
        if (sm != null) {
          sm.sink.add(event);
        }
      }
    },
    onError: (e) {
      print(e);
    },
    onDone: () {
      // for (var key in streams.keys) {
      // streams[key]?.sink.close();
      // }
    },
  );

  _webSocketChannel = channel;
  return _webSocketChannel!;
}