Esempio n. 1
0
        public override Task OnDisconnected(bool stopCalled)
        {
            string          userName = Context.User.Identity.Name;
            ApplicationUser FromUser = null;

            try
            {
                FromUser = db.Users.FirstOrDefault(u => u.Email.Equals(userName));
            }catch (Exception e)
            {
            }

            string connectionId = Context.ConnectionId;



            if (FromUser != null)
            {
                lock (FromUser.ConnectionSignal)
                {
                    ConnectionSignal cs = db.ConnectionSignal.FirstOrDefault(c => c.ConnectionIds.Equals(connectionId));
                    db.ConnectionSignal.Remove(cs);
                }
            }
            db.SaveChanges();
            return(base.OnDisconnected(stopCalled));
        }
Esempio n. 2
0
        private void WriteFrame(ConnectionSignal signal, BinaryNumber channelId, byte[] buffer, int offset, int count)
        {
            int frameCount = CONNECTION_FRAME_BUFFER_SIZE;

            while (true)
            {
                if (count < frameCount)
                {
                    frameCount = count;
                }

                lock (_baseStream)
                {
                    _baseStream.WriteByte((byte)signal);                                          //write frame signal
                    _baseStream.Write(channelId.Value);                                           //write channel id
                    _baseStream.Write(BitConverter.GetBytes(Convert.ToUInt16(frameCount)), 0, 2); //write data length

                    if (frameCount > 0)
                    {
                        _baseStream.Write(buffer, offset, frameCount); //write data
                    }
                    offset += frameCount;
                    count  -= frameCount;

                    if (count < 1)
                    {
                        _baseStream.Flush(); //flush base stream
                        break;
                    }
                }
            }
        }
Esempio n. 3
0
        public override Task OnConnected()
        {
            //string userName = Context.User.Identity.Name;
            string      connectionId = Context.ConnectionId;
            HttpContext con          = HttpContext.Current;

            var             FromUserId = HttpContext.Current.User.Identity.GetUserId();
            ApplicationUser FromUser   = db.Users.Find(FromUserId);

            if (FromUser == null)
            {
                return(base.OnConnected());;
            }


            if (FromUser.ConnectionSignal == null)
            {
                FromUser.ConnectionSignal = new List <ConnectionSignal>();
            }



            lock (FromUser.ConnectionSignal)
            {
                ConnectionSignal c = new ConnectionSignal();
                c.ConnectionIds = connectionId;
                ConnectionSignal x = FromUser.ConnectionSignal.FirstOrDefault(d => d.ConnectionIds.Equals(connectionId));

                if (x == null)
                {
                    //if (FromUser.ConnectionSignal.Count == 1)
                    //{

                    //}
                    //else
                    //{
                    FromUser.ConnectionSignal.Add(c);
                    //}
                }
            }
            db.SaveChanges();

            return(base.OnConnected());
        }