receiveMessage method
Receives a single WebSocket message.
Throws an Error on failure.
See NSURLSessionWebSocketTask.receiveMessageWithCompletionHandler:
Implementation
Future<URLSessionWebSocketMessage> receiveMessage() async {
final completer = Completer<URLSessionWebSocketMessage>();
final completionPort = ReceivePort();
completionPort.listen((d) {
final messageAndError = d as List;
final mp = Pointer<ncb.ObjCObject>.fromAddress(messageAndError[0] as int);
final ep = Pointer<ncb.ObjCObject>.fromAddress(messageAndError[1] as int);
final message = mp.address == 0
? null
: URLSessionWebSocketMessage._(
ncb.NSURLSessionWebSocketMessage.castFromPointer(linkedLibs, mp,
retain: false, release: true));
final error = ep.address == 0
? null
: Error._(ncb.NSError.castFromPointer(linkedLibs, ep,
retain: false, release: true));
if (error != null) {
completer.completeError(error);
} else {
completer.complete(message!);
}
completionPort.close();
});
helperLibs.CUPHTTPReceiveMessage(
_urlSessionWebSocketTask, completionPort.sendPort.nativePort);
return completer.future;
}