コード例 #1
0
        internal static async Task <WebSocketApiResult> ReceiveApiMessage(this WebSocket socket, byte[] buffer, CancellationToken?cancellationToken = null)
        {
            if (cancellationToken == null)
            {
                cancellationToken = CancellationToken.None;
            }
            WebSocketStringResult res = await socket.ReceiveString(buffer, cancellationToken);

            var result = new WebSocketApiResult {
                SocketResult = res.SocketResult
            };

            if (res.SocketResult.MessageType != WebSocketMessageType.Text)
            {
                result.JsonException = new JsonException("Can't read binary messages as JSON.");
            }
            else if (string.IsNullOrEmpty(res.Message))
            {
                result.JsonException = new JsonException("The message was empty.");
            }
            else
            {
                try
                {
                    result.Obj = JsonApiObject.Deserialize(res.Message);
                }
                catch (JsonException ex)
                {
                    result.JsonException = ex;
                }
            }
            return(result);
        }