sendMessage method

Future<void> sendMessage(
  1. URLSessionWebSocketMessage message
)

Sends a single WebSocket message.

The returned future will complete successfully when the message is sent and with an Error on failure.

See NSURLSessionWebSocketTask.sendMessage:completionHandler:

Implementation

Future<void> sendMessage(URLSessionWebSocketMessage message) async {
  final completer = Completer<void>();
  final completionPort = ReceivePort();
  completionPort.listen((message) {
    final ep = Pointer<ncb.ObjCObject>.fromAddress(message as int);
    if (ep.address == 0) {
      completer.complete();
    } else {
      final error = Error._(ncb.NSError.castFromPointer(linkedLibs, ep,
          retain: false, release: true));
      completer.completeError(error);
    }
    completionPort.close();
  });

  helperLibs.CUPHTTPSendMessage(_urlSessionWebSocketTask, message._nsObject,
      completionPort.sendPort.nativePort);
  await completer.future;
}