Пример #1
0
        /// <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());
            }
        }
Пример #2
0
        /// <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();
            }
        }