/// <summary> /// Reads messages from the specified <see cref="WebSocket"/> as a series of <see cref="Stream"/> objects. /// </summary> /// <param name="webSocket">The web socket.</param> /// <returns></returns> /// <exception cref="System.ArgumentNullException">ws</exception> public static IEnumerable <Task <Stream> > Streams(this WebSocket webSocket) { if (webSocket == null) { throw new ArgumentNullException("ws"); } WebSocketReaderStream reader = null; var buffer = WebSocket.CreateClientBuffer(Environment.SystemPageSize, 16); Func <Task <Stream> > next = async() => { if (reader != null) { await reader.DepleteAsync(); reader.Dispose(); } return(reader = new WebSocketReaderStream(webSocket, buffer)); }; while (webSocket.State == WebSocketState.Open) { yield return(next()); } }
/// <summary> /// Reads messages from the specified <see cref="WebSocket"/> as a series of <see cref="Stream"/> objects. /// </summary> /// <param name="webSocket">The web socket.</param> /// <returns></returns> /// <exception cref="System.ArgumentNullException">ws</exception> public static IEnumerable<Task<Stream>> Streams(this WebSocket webSocket) { if (webSocket == null) throw new ArgumentNullException("ws"); WebSocketReaderStream reader = null; var buffer = WebSocket.CreateClientBuffer(Environment.SystemPageSize, 16); Func<Task<Stream>> next = async () => { if (reader != null) { await reader.DepleteAsync(); reader.Dispose(); } return reader = new WebSocketReaderStream(webSocket, buffer); }; while (webSocket.State == WebSocketState.Open) { yield return next(); } }