Exemple #1
0
        public override void ExecuteCommand(MsgPackSession session, BinaryRequestInfo requestInfo)
        {
            CmdHelper.GenSocketLog(session, requestInfo.Key, requestInfo.Body);
            try
            {
                var gpsinfo = Encoding.UTF8.GetString(requestInfo.Body, 1, requestInfo.Body.Length - 1 - 8);
                Console.WriteLine(string.Format("命令:{0} 经纬度:{1}", requestInfo.Key, gpsinfo));
                if (SessionCaches.SCSessionDic.ContainsKey(session.SessionID))
                {
                    var scid = SessionCaches.SCSessionDic[session.SessionID];
                    var gps  = Data.Entities.Instance.gpses.Where(p => p.scid == scid).OrderByDescending(p => p.datetime).FirstOrDefault();
                    if (gps == null || gps.gpsdetaile != gpsinfo)
                    {
                        gps            = new Data.gps();
                        gps.id         = string.Format("{0}_{1}", scid, DateTime.Now.ToString("yyMMddHHmmssfff"));
                        gps.datetime   = DateTime.Now;
                        gps.gpsdetaile = gpsinfo;
                        gps.scid       = scid;
                        Data.Entities.Instance.gpses.Add(gps);
                        Data.Entities.Instance.SaveChanges();
                    }
                    var scinfo = Data.Entities.Instance.scinfoes.FirstOrDefault(p => p.id == scid);
                    if (scinfo != null && string.IsNullOrEmpty(scinfo.gpg))
                    {
                        scinfo.gpg = gpsinfo;
                        Data.Entities.Instance.SaveChanges();
                    }
                }

                var sendData = CmdHelper.GenSocketData(new List <byte[]> {
                    new byte[] { 0x02 },
                    Encoding.UTF8.GetBytes("PING"),
                    new byte[] { 0x00 }
                });
                CmdHelper.SendData(session, sendData);
            }
            catch (Exception es)
            {
                LogHelper.LogError(es);
                var sendData = CmdHelper.GenSocketData(new List <byte[]> {
                    new byte[] { 0x02 },
                    Encoding.UTF8.GetBytes("ERRO"),
                    new byte[] { 0x00 }
                });
                CmdHelper.SendData(session, sendData);
            }
        }