receiveMessage(completion:)
Schedules a single receive completion handler for a complete message, as opposed to a range of bytes.
Declaration
@preconcurrency final func receiveMessage(completion: @escaping @Sendable (Data?, NWConnection.ContentContext?, Bool, NWError?) -> Void)Parameters
- completion:
A receive completion is invoked exactly once for a call to receive. The completion indicates that the requested content has been received (in which case the content is delivered), or that an error has occurred.
The completion delivers the received content, which may be nil if the message is complete or an error occurred, the message context, a flag indicating if the message is complete, and any associated error.
Discussion
Receiving messages allows you to deal with complete datagrams or application-layer messages without needing to reconstruct a stream.
If you are using UDP, receiving a message will deliver a single datagram.
If you request to receive a message on a protocol that is otherwise an unbounded bytestream, like TCP or TLS, note that this will not deliver any data until the stream is closed by the peer.
In order to use messages on top of a bytestream protocol, add a protocol such as NWProtocolWebSocket or a custom NWProtocolFramer to your protocol stack.