예제 #1
0
        private async void RunReceiveLoop()
        {
            var buffer = new ArraySegment <byte> (new byte [4096]);

            while (!_cancellation?.IsCancellationRequested ?? true)
            {
                try {
                    var r = await cws.ReceiveAsync(buffer, _cancellation.Token);

                    if (r.MessageType == WebSocketMessageType.Close)
                    {
                        await UpdateMessageArea($"Received {r.MessageType}: Close Status: [{cws.CloseStatus} Description: [{cws.CloseStatusDescription}]");
                    }
                    else
                    {
                        await UpdateMessageArea($"Received {r.MessageType}: [{Encoding.UTF8.GetString (buffer.Array, buffer.Offset, r.Count)}]");
                    }
                } catch (Exception e) {
                    if (!_cancellation.IsCancellationRequested)
                    {
                        await UpdateMessageArea($"Failed to receive: {e.Message}");

                        break;
                    }
                }
            }
        }
            public async override Task <int> Recive(byte[] Buffer)
            {
                var Array        = new ArraySegment <byte>(Buffer);
                var Result       = (await Socket.ReceiveAsync(Array, CancellationToken.None)).Count;
                var ReciverArray = Array.Array;

                ReciverArray.CopyTo(Buffer, 0);
                return(Result);
            }
예제 #3
0
        static async void TestWS()
        {
            Console.WriteLine("ws call....");
            ClientWebSocket cws = new ClientWebSocket();
            await cws.ConnectAsync(new Uri("ws://127.0.0.1:9301/ws"), CancellationToken.None);

            await cws.SendAsync(new ArraySegment <byte> (Encoding.UTF8.GetBytes("{test}")), WebSocketMessageType.Text, true, CancellationToken.None);

            var buffer = new ArraySegment <byte> (new byte [4096]);
            var result = await cws.ReceiveAsync(buffer, CancellationToken.None);

            Console.WriteLine("....ws call -> " + Encoding.UTF8.GetString(buffer));
        }
예제 #4
0
        public async static void sendrecv(string json)
        {
            Console.WriteLine("ws call.... passing" + json);

            ClientWebSocket cws = new ClientWebSocket();

            {
                var buffer = new ArraySegment <byte> (new byte [4096]);
                await cws.ConnectAsync(new Uri("ws://127.0.0.1:9301/ws"), CancellationToken.None);

                await cws.SendAsync(new ArraySegment <byte> (Encoding.UTF8.GetBytes(json)), WebSocketMessageType.Text, true, CancellationToken.None);

                await cws.ReceiveAsync(buffer, CancellationToken.None);

                _result = Encoding.UTF8.GetString(buffer);
            }

            Console.WriteLine("....ws call");
        }