예제 #1
0
        public static async Task Echo(HttpContext context, WebSocket webSocket)
        {
            var buffer = new byte[1024 * 4];
            WebSocketReceiveResult result = await webSocket.ReceiveAsync(new ArraySegment <byte>(buffer), CancellationToken.None);

            while (!result.CloseStatus.HasValue)
            {
                WebSocketServico = new _WebSocketServico(Context.Instancia("Data Source=127.0.0.1;Initial Catalog=cronos.db;User ID=root;Password="******"SEND"))
                {
                    SocketData <Mensagem> resposta = TratarOutput <Mensagem>(socketData);
                    mystring = TratamentoMensagem.SerializarObjeto(resposta);
                }
                else if (socketData.Operacao.Contains("REQUEST"))
                {
                    SocketData <MensagemListResponse> resposta = TratarOutput <MensagemListResponse>(socketData.Copy <MensagemListResponse, Mensagem>());
                    mystring = TratamentoMensagem.SerializarObjeto(resposta);
                }

                ArraySegment <byte> arrayResponse = TratamentoMensagem.StringToArray(mystring);

                await webSocket.SendAsync(arrayResponse, result.MessageType, result.EndOfMessage, CancellationToken.None);

                result = await webSocket.ReceiveAsync(new ArraySegment <byte>(buffer), CancellationToken.None);
            }
            await webSocket.CloseAsync(result.CloseStatus.Value, result.CloseStatusDescription, CancellationToken.None);
        }
예제 #2
0
        private static SocketData <TData> TratarInput <TData>(ArraySegment <byte> input) where TData : class
        {
            byte[]             filtro   = TratamentoMensagem.FiltrarArray(input);
            string             mensagem = TratamentoMensagem.ArrayToString(filtro);
            SocketData <TData> socket   = TratamentoMensagem.RecuperarObjeto <TData>(mensagem);

            socket.DataResposta = DateTime.Now.ToString();

            return(socket);
        }