connect method
void
connect()
Open a WebSocket connection to the Bybit API
Implementation
void connect() {
log.d('ByBitWebSocket.connect()');
timeoutTimer = RestartableTimer(timeout!, () {
log.d('ByBitWebSocket timeoutTimer expired.');
throw Exception('ByBitWebSocket timeoutTimer expired.');
});
transformer =
StreamTransformer<dynamic, Map<String, dynamic>?>.fromHandlers(
handleData: (data, sink) {
timeoutTimer!.reset();
sink.add(jsonDecode(data.toString()) as Map<String, dynamic>?);
},
handleDone: (sink) {
log.i('ByBitWebSocket : Socket closed');
},
handleError: (error, stackTrace, sink) {
log.e('ByBitWebSocket transformer error: ' + error.toString());
},
);
controller = StreamController<Map<String, dynamic>?>();
// +1000 is the timeout to avoid repeat attacks
var timestamp = DateTime.now().millisecondsSinceEpoch + 1000;
var signature = sign(secret: password, timestamp: timestamp);
var param = 'api_key=' +
key +
'&expires=' +
timestamp.toString() +
'&signature=' +
signature;
log.i('Open WebSocket on: ' + url + '?' + param);
websocket = WebSocketChannel.connect(Uri.parse(url + '?' + param));
controller!.addStream(
websocket!.stream.map((value) => value).transform(transformer!));
timeoutTimer!.reset();
if (pingPeriod > 0) {
ping(); // Start ping
pingTimer = Timer.periodic(Duration(seconds: pingPeriod), (timer) {
ping();
});
}
}