request method
dynamic
request(
- dynamic method,
- dynamic data
Send a protoo request to the server-side Room.
Implementation
request(method, data) async {
final completer = new Completer();
final request = Message.createRequest(method, data);
final requestId = request['id'].toString();
logger.debug(
'request() [method:' + method.toString() + ', id: ' + requestId + ']');
// This may throw.
await this._transport.send(request);
int timeout = (1500 * (15 + (0.1 * this._sents.length))).toInt();
final sent = SentObject(
id: request['id'],
method: request['method'],
resolve: (data2) {
final sent = _sents.remove(requestId);
sent?.timer.cancel();
completer.complete(data2);
},
reject: (error) {
final sent = _sents.remove(requestId);
sent?.timer.cancel();
completer.completeError(error);
},
timer: new Timer.periodic(new Duration(milliseconds: timeout),
(Timer timer) {
if (this._sents.remove(requestId) == null) return;
completer.completeError('request timeout');
}),
close: () {
final sent = _sents[requestId];
sent?.timer.cancel();
completer.completeError('peer closed');
});
_sents[requestId] = sent;
return completer.future;
}