コード例 #1
0
        private async Task ReceiveAsync(HttpContext context, WebSocket socket)
        {
            var buffer = new byte[BufferSize * 1024];
            var result = default(WebSocketReceiveResult);

            while (socket.State == WebSocketState.Open)
            {
                result = await socket.ReceiveAsync(new ArraySegment <byte>(buffer), CancellationToken.None);

                if (result.MessageType == WebSocketMessageType.Close)
                {
                    if (!_webSocketManager.OnDisconnected(socket))
                    {
                        throw new WebSocketException("Error while removing socket");
                    }
                    break;
                }
                else
                {
                    _webSocketManager.Receive(socket, result, buffer);
                }
            }

            await socket.CloseAsync(result.CloseStatus.Value, "Socket`s closed successfully", CancellationToken.None);
        }