Exemplo n.º 1
0
        public override void OnMessage(String message)
        {
            if (message.StartsWith("|online|"))
            {
                string id    = message.Substring(8);
                var    found = Clients.SingleOrDefault(r => ((Socket)r).Name == id);

                Send(found != null ? "|online|true|" + id : "|online|false|" + id);
            }
            else if (message.StartsWith("|message|"))
            {
                string afterType = message.Substring(9);
                string ID        = afterType.Substring(0, afterType.IndexOf('|'));

                //+ 1 to get past the :'s index
                int startOfAfterId = afterType.IndexOf('|') + 1;

                string afterId = afterType.Substring(startOfAfterId);

                DateTime?time = DateTime.Parse(afterId.Substring(0, afterId.IndexOf('|')));

                string fullMessage = afterId.Substring(afterId.IndexOf('|') + 1);

                var webSocketHandler = Clients.SingleOrDefault(r => ((Socket)r).Name == ID);

                string toSend = "|message|" + Name + "|";


                using (var cxt = new SocialMediaEntities())
                {
                    var messageForDb = new Message()
                    {
                        BeenRead    = "0",
                        FromID      = Name,
                        ToID        = ID,
                        MessageType = 1,
                        Message1    = fullMessage,
                        Time        = time
                    };


                    cxt.Messages.Add(messageForDb);
                    cxt.SaveChanges();
                }


                webSocketHandler?.Send(toSend);
            }
        }
Exemplo n.º 2
0
 public override void OnOpen()
 {
     _tipo = Convert.ToString(WebSocketContext.QueryString["tipo"]);
     if (_tipo == "MESA")
     {
         _id = 0;
         clientes.Add(this);
     }
     else
     {
         _tipo = "JOGADOR";
         _id   = Convert.ToInt32(WebSocketContext.QueryString["id"]);
         clientes.Add(this);
         clientes.SingleOrDefault(r => ((MicrosoftWebSockets)r)._id == 0).Send(string.Format("J,NOVO,{0}", _id));
     }
 }
Exemplo n.º 3
0
        /// <summary>
        /// Provides receive message from server
        /// Send back
        /// </summary>
        public override void OnMessage(string message)
        {
            var ser   = new JavaScriptSerializer();
            var deser = ser.Deserialize <Message>(message);

            // send to receiver
            if (!friends.Contains(deser.UserName))
            {
                try
                {
                    // if receiver is not online
                    _chatUser.Broadcast(" ");
                    sendSuccess = false;
                }
                catch (Exception)
                {
                    sendSuccess = false;
                }
            }
            else // receiver is online
            {
                // type cast fine receiver's username in the websocket collection
                try
                {
                    _chatUser.SingleOrDefault(r => ((ChatService)r).connectedUser == deser.UserName).Send(JsonConvert.SerializeObject(connectedUser + " said: " + deser.MessageContent + "  " + DateTime.Now.ToLocalTime()));
                    sendSuccess = true;
                }
                catch (Exception)
                {
                    sendSuccess = false;
                }
            }
        }
Exemplo n.º 4
0
        public override void OnMessage(string message)
        {
            var sender = clients.SingleOrDefault(x => ((MicrosofWebSocketHandler)x).name == "mohit");

            if (sender != null)
            {
                sender.Send(message);
            }
        }
Exemplo n.º 5
0
        public override void OnMessage(string msg)
        {
            SocketMessage socMsg = JsonConvert.DeserializeObject <SocketMessage>(msg);

            if (socMsg.Type == SocketMessage.MessageType.Public)
            {
                chatClients.Broadcast(msg);
            }
            else if (socMsg.Type == SocketMessage.MessageType.Private)
            {
                chatClients.SingleOrDefault(x => ((ChatSocket)x).user.Username.Equals(socMsg.Recipent)).Send(msg);
            }
        }
Exemplo n.º 6
0
        private static WebSocketHandler ObterClienteWebSocket(Usuario usuario)
        {
            var sessaoDestinatario = webSocketClient.SingleOrDefault(x => x.WebSocketContext.SecWebSocketKey == usuario.SessaoSocketAtiva.Chave);

            return(sessaoDestinatario);
        }
Exemplo n.º 7
0
        public override void OnMessage(string message)
        {
            try
            {
                var envio = JsonConvert.DeserializeObject <Envio>(message);
                switch (envio.TipoMensagem)
                {
                case (int)TipoMensagem.Montagem:
                {
                    Barcos = new List <Barco>();

                    var firstOrDefault = envio.Objeto.FirstOrDefault();

                    if (firstOrDefault != null)
                    {
                        var idTab = int.Parse(firstOrDefault.ToString());

                        using (var db = new TabuleirosContext())
                        {
                            var tabuleiro = db.Tabuleiros.FirstOrDefault(x => x.Id == idTab);


                            var itens = JsonConvert.DeserializeObject <List <EnvioBarco> >(tabuleiro.Dados);

                            foreach (var item in itens)
                            {
                                Barcos.Add(new Barco(item));

                                StatusTabuleiro = true;
                            }
                        }
                    }
                    else
                    {
                        Send(JsonConvert.SerializeObject(new Retorno(TipoMensagemRetorno.Fail, "Você Erro !!!!")));
                    }


                    if (clients.All(x => ((MicrosoftWebSockets)x).StatusTabuleiro))
                    {
                        clients.Broadcast(JsonConvert.SerializeObject(new Retorno(TipoMensagemRetorno.Inicio, "Jogo Iniciado")));

                        ObterOponente().Send(JsonConvert.SerializeObject(new Retorno(TipoMensagemRetorno.MandoDeJogo, "Sua Vez !!!")));
                    }
                    else
                    {
                        this.Send(JsonConvert.SerializeObject(new Retorno(TipoMensagemRetorno.Aguarde, "Aguarde o proximo Jogador terminar a Montagem....")));
                    }
                }
                break;


                case (int)TipoMensagem.Jogada:
                {
                    var jogada = envio.Objeto.FirstOrDefault();

                    if (jogada != null)
                    {
                        var opoente = ObterOponente();

                        if (opoente != null)
                        {
                            var barco = opoente.Barcos.FirstOrDefault(x => x.Coordenadas.Any(y => y.Valor == jogada.ToString() && !y.Destruido));

                            if (barco != null)
                            {
                                opoente.Barcos.Remove(barco);

                                barco.Afundar(jogada.ToString());

                                opoente.Barcos.Add(barco);

                                AtualizarBarcos(opoente, jogada.ToString());

                                Send(JsonConvert.SerializeObject(new Retorno(TipoMensagemRetorno.Acerto, "Você acerto !!!!!")));


                                if (barco.Coordenadas.All(x => x.Destruido))
                                {
                                    opoente.Send(
                                        JsonConvert.SerializeObject(new Retorno(TipoMensagemRetorno.Destruido, string.Format("Ops Você perdeu seu barco !!! |{0}", barco.TipoBarco))));
                                }
                            }
                            else
                            {
                                opoente.Send(JsonConvert.SerializeObject(new Retorno(TipoMensagemRetorno.Tiro, string.Format("Tiro |{0}", jogada.ToString()))));
                                Send(JsonConvert.SerializeObject(new Retorno(TipoMensagemRetorno.Erro, "Você Erro !!!!")));
                            }
                        }
                    }
                }

                    VerificarFinalJogo();

                    ObterOponente().Send(JsonConvert.SerializeObject(new Retorno(TipoMensagemRetorno.MandoDeJogo, "Sua Vez !!!!")));
                    break;

                case (int)TipoMensagem.TempoEsgotado:
                    ObterOponente().Send(JsonConvert.SerializeObject(new Retorno(TipoMensagemRetorno.MandoDeJogo, "Sua Vez !!!!")));
                    break;
                }

                var webSocketHandler = clients.SingleOrDefault(r => ((MicrosoftWebSockets)r).name == "Julio");


                if (webSocketHandler != null)
                {
                    webSocketHandler.Send("Rola");
                }
            }
            catch (Exception ex)
            {
                this.Send(JsonConvert.SerializeObject(new Retorno(TipoMensagemRetorno.Fail, "Mensagem com Erro")));
            }
        }
Exemplo n.º 8
0
        public override void OnMessage(string message)
        {
            try
            {
                ResultClassForNonAuth result = new ResultClassForNonAuth();
                string baseURL = (WebConfigurationManager.AppSettings["WebSiteUrl"]);
                baseURL += (WebConfigurationManager.AppSettings["userimagepath"]).Replace("~", "");
                if (message.Split(',')[1].Split(':').Contains("GroupId"))
                {
                    var Message = message.Split(',')[2].Split(':')[1];
                    var UserId  = message.Split(',')[0].Split(':')[1];
                    var GroupId = message.Split(',')[1].Split(':')[1];

                    int GId       = Convert.ToInt32(GroupId);
                    int Uid       = Convert.ToInt32(UserId);
                    var groupname = "";

                    List <WebSocketSessionDb> list = new List <WebSocketSessionDb>();
                    MessageModel MessagesModel     = new MessageModel();
                    using (LystenEntities db = new LystenEntities())
                    {
                        groupname = db.Groups.Where(x => x.Id == GId).Select(x => x.Name).FirstOrDefault();
                        Message ms = new Message()
                        {
                            Body            = Message,
                            CreatedDate     = DateTime.UtcNow,
                            ParentMessageId = 0,
                            CreatorId       = Uid
                        };
                        db.Messages.Add(ms);
                        db.SaveChanges();

                        MessageRecipient MR = new MessageRecipient()
                        {
                            RecipientGroupId = GId,
                            RecipientId      = null,
                            MessageId        = ms.Id,
                            IsRead           = false
                        };
                        db.MessageRecipients.Add(MR);
                        db.SaveChanges();


                        int gid = Convert.ToInt32(GroupId);
                        list = db.WebSocketSessionDbs.Where(x => x.GroupID == gid).ToList();



                        var userdataTimeZone = db.User_Master.Where(x => x.Id == Uid).Select(x => x.TimeZone).FirstOrDefault();
                        var ddd = DateTime.UtcNow;
                        if (userdataTimeZone != null && userdataTimeZone != "")
                        {
                            Instant instant = Instant.FromDateTimeUtc(ms.CreatedDate.Value);
                            IDateTimeZoneProvider timeZoneProvider = DateTimeZoneProviders.Tzdb;
                            var usersTimezoneId    = userdataTimeZone; //just an example
                            var usersTimezone      = timeZoneProvider[usersTimezoneId];
                            var usersZonedDateTime = instant.InZone(usersTimezone);
                            ddd = usersZonedDateTime.ToDateTimeUnspecified();
                        }



                        MessagesModel = new MessageModel()
                        {
                            MessageId        = ms.Id,
                            Body             = ms.Body,
                            RecipientGroupId = GId,
                            CreatorId        = Uid,
                            IsRead           = false,
                            CreatedDate      = ddd.Date == DateTime.UtcNow.Date ? "Today " + Convert.ToDateTime((ddd)).ToString("HH:mm") : Convert.ToDateTime(ddd).ToString("dd MM yyyy HH:mm"),

                            //CreatedDate = Convert.ToDateTime(ms.CreatedDate).ToString("dd MM yyyy HH:MM"),
                            Image           = US.GetFavouriteImage(baseURL, Uid),
                            CreatorName     = db.User_Master.Where(y => y.Id == Uid).Select(y => y.FullName).FirstOrDefault() == null ? "" : db.User_Master.Where(y => y.Id == Uid).Select(y => y.FullName).FirstOrDefault(),
                            ParentMessageId = 0,
                            ExpiryDate      = System.DateTime.Now,
                            RecipientId     = 0
                        };
                        result.Code = (int)HttpStatusCode.OK;
                        result.Msg  = ap.Success;
                        result.Data = MessagesModel;
                    }
                    var json = new JavaScriptSerializer().Serialize(result);
                    foreach (var item in list)
                    {
                        foreach (var data in clients.Where(x => x.WebSocketContext.SecWebSocketKey == item.SessionId))
                        {
                            clients.SingleOrDefault(r => ((WebSocketHandler)r).WebSocketContext.SecWebSocketKey == item.SessionId).Send(json);
                        }
                        using (LystenEntities db = new LystenEntities())
                        {
                            var obj        = db.User_Master.Where(x => x.Id == item.UserId.Value).FirstOrDefault();
                            var sendername = db.User_Master.Where(x => x.Id == Uid).Select(x => x.FullName).FirstOrDefault();

                            if (obj != null)
                            {
                                if (obj.DeviceToken != null)
                                {
                                    try
                                    {
                                        sendMsgUser(GId, true, obj.DeviceToken, Message, groupname, sendername);
                                    }
                                    catch
                                    {
                                    }
                                }
                            }
                        }
                    }
                }
                else
                {
                    var Message      = message.Split(',')[2].Split(':')[1];
                    var UserId       = message.Split(',')[0].Split(':')[1];
                    var ReceiptionId = message.Split(',')[1].Split(':')[1];

                    int RId = Convert.ToInt32(ReceiptionId);
                    int Uid = Convert.ToInt32(UserId);


                    List <WebSocketSessionDb> list = new List <WebSocketSessionDb>();
                    MessageModel MessagesModel     = new MessageModel();
                    var          SenderFullName    = "";

                    using (LystenEntities db = new LystenEntities())
                    {
                        SenderFullName = db.User_Master.Where(x => x.Id == Uid).Select(x => x.FullName).FirstOrDefault();

                        if (!db.MessageRequests.Any(x => x.ToUserId == RId && x.FromUserId == Uid || x.FromUserId == RId && x.ToUserId == Uid))
                        {
                            MessageRequest M1R = new MessageRequest();
                            M1R.ToUserId    = Convert.ToInt32(RId);
                            M1R.FromUserId  = Convert.ToInt32(Uid);
                            M1R.IsAccept    = false;
                            M1R.IsReject    = false;
                            M1R.IsRequested = true;
                            db.MessageRequests.Add(M1R);
                            db.SaveChanges();
                            var obj = db.User_Master.Where(x => x.Id == M1R.ToUserId).FirstOrDefault();


                            if (obj.DeviceToken != null || obj.DeviceToken != "")
                            {
                                try
                                {
                                    if (obj.DeviceType == "Android")
                                    {
                                        Helpers.NotificationHelper.sendMsgUserRequest(obj.Id, obj.DeviceToken, 0, SenderFullName);
                                    }
                                    else
                                    {
                                        sendMsgUserRequest(obj.Id, obj.DeviceToken, 0, SenderFullName);
                                    }
                                }
                                catch (Exception ex)
                                {
                                    CommonServices.ErrorLogging(ex);
                                }
                            }
                        }
                        Message ms = new Message()
                        {
                            Body            = Message,
                            CreatedDate     = DateTime.UtcNow,
                            ParentMessageId = 0,
                            CreatorId       = Uid
                        };
                        db.Messages.Add(ms);
                        db.SaveChanges();
                        MessageRecipient MR = new MessageRecipient()
                        {
                            RecipientGroupId = null,
                            RecipientId      = RId,
                            MessageId        = ms.Id,
                            IsRead           = false
                        };
                        db.MessageRecipients.Add(MR);
                        db.SaveChanges();
                        list = db.WebSocketSessionDbs.Where(x => x.RecipientId == RId && x.UserId == Uid || (x.RecipientId == Uid && x.UserId == RId)).ToList();


                        var userdataTimeZone = db.User_Master.Where(x => x.Id == Uid).Select(x => x.TimeZone).FirstOrDefault();
                        var ddd = DateTime.UtcNow;
                        if (userdataTimeZone != null && userdataTimeZone != "")
                        {
                            Instant instant = Instant.FromDateTimeUtc(ms.CreatedDate.Value);
                            IDateTimeZoneProvider timeZoneProvider = DateTimeZoneProviders.Tzdb;
                            var usersTimezoneId    = userdataTimeZone; //just an example
                            var usersTimezone      = timeZoneProvider[usersTimezoneId];
                            var usersZonedDateTime = instant.InZone(usersTimezone);
                            ddd = usersZonedDateTime.ToDateTimeUnspecified();
                        }
                        try
                        {
                            MessagesModel = new MessageModel()
                            {
                                MessageId        = ms.Id,
                                Body             = ms.Body,
                                RecipientGroupId = 0,
                                CreatorId        = Uid,
                                IsRead           = false,

                                CreatedDate = ddd.Date == DateTime.UtcNow.Date ? "Today " + Convert.ToDateTime((ddd)).ToString("HH:mm") : Convert.ToDateTime(ddd).ToString("dd MM yyyy HH:mm"),


                                //CreatedDate = ms.CreatedDate.Value.Date == DateTime.Now.Date ? "Today " + Convert.ToDateTime((ms.CreatedDate.Value)).ToString("HH:mm") : Convert.ToDateTime(ms.CreatedDate.Value).ToString("dd MM yyyy HH:mm"),

                                //CreatedDate = Convert.ToDateTime(ms.CreatedDate).ToString("dd MM yyyy HH:MM"),
                                Image           = US.GetFavouriteImage(baseURL, Uid),
                                CreatorName     = db.User_Master.Where(y => y.Id == Uid).Select(y => y.FullName).FirstOrDefault() == null ? "" : db.User_Master.Where(y => y.Id == Uid).Select(y => y.FullName).FirstOrDefault(),
                                ParentMessageId = 0,
                                ExpiryDate      = System.DateTime.Now,
                                RecipientId     = RId
                            };
                        }
                        catch (Exception ex)
                        {
                            CommonServices.ErrorLogging(ex);
                        }
                        result.Code = (int)HttpStatusCode.OK;
                        result.Msg  = ap.Success;
                        result.Data = MessagesModel;
                    }
                    try
                    {
                        var json = new JavaScriptSerializer().Serialize(result);
                        foreach (var item in list)
                        {
                            foreach (var data in clients.Where(x => x.WebSocketContext.SecWebSocketKey == item.SessionId))
                            {
                                clients.SingleOrDefault(r => ((WebSocketHandler)r).WebSocketContext.SecWebSocketKey == item.SessionId).Send(json);
                            }
                            using (LystenEntities db = new LystenEntities())
                            {
                                var obj = db.User_Master.Where(x => x.Id == item.RecipientId.Value).FirstOrDefault();


                                if (obj != null)
                                {
                                    //if (obj.DeviceToken != null)
                                    //{
                                    //    sendMsgEventsssss(item.UserId.Value, obj.DeviceToken, Message, SenderFullName);
                                    //}

                                    try
                                    {
                                        if (obj.DeviceToken != null)
                                        {
                                            if (obj.DeviceType == "Android")
                                            {
                                                Helpers.NotificationHelper.sendMsgEventsssss(item.UserId.Value, obj.DeviceToken, Message, SenderFullName, MessagesModel.MessageId);
                                            }
                                            else
                                            {
                                                sendMsgEventsssss(item.UserId.Value, obj.DeviceToken, Message, SenderFullName);
                                                //sendMsgUserRequest(obj.Id, obj.DeviceToken, 0, SenderFullName);
                                            }
                                        }
                                    }
                                    catch (Exception ex)
                                    {
                                        CommonServices.ErrorLogging(ex);
                                    }
                                }
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                        CommonServices.ErrorLogging(ex);
                    }
                }
            }
            catch (Exception ex)
            {
                CommonServices.ErrorLogging(ex);
            }
        }