Пример #1
0
        private void OnClose(string reason, Exception desc = null)
        {
            if (this.ReadyState != Socket.ReadyStateEnum.OPENING && this.ReadyState != Socket.ReadyStateEnum.OPEN)
            {
                return;
            }
            LogManager logger = LogManager.GetLogger(Global.CallerName("", 0, ""));

            logger.Info(string.Format("OnClose socket close with reason: {0}", (object)reason));
            if (this.PingIntervalTimer != null)
            {
                this.PingIntervalTimer.Stop();
            }
            if (this.PingTimeoutTimer != null)
            {
                this.PingTimeoutTimer.Stop();
            }
            EasyTimer.SetTimeout((ActionTrigger)(() => {
                this.WriteBuffer = ImmutableList <Packet> .Empty;
                this.CallbackBuffer = ImmutableList <ActionTrigger> .Empty;
                this.PrevBufferLen = 0;
            }), 1);
            if (this.mTransport != null)
            {
                this.mTransport.Off(Socket.EVENT_CLOSE);
                this.mTransport.Close();
                this.mTransport.Off();
            }

            this.ReadyState = Socket.ReadyStateEnum.CLOSED;
            logger.Info("Socket.ReadyState = CLOSE");
            this.Id = (string)null;
            this.Emit(Socket.EVENT_CLOSE, (object)reason, (object)desc);
        }
Пример #2
0
        public Socket Open()
        {
            string name = !this.RememberUpgrade || !Socket.PriorWebsocketSuccess || !this.Transports.Contains(WebSocket.NAME)
        ? this.Transports[0]
        : WebSocket.NAME;

            this.ReadyState = Socket.ReadyStateEnum.OPENING;
            Transport transport = this.CreateTransport(name);

            this.SetTransport(transport);
            ThreadPool.QueueUserWorkItem((WaitCallback)(arg => {
                LogManager logger = LogManager.GetLogger(Global.CallerName("", 0, ""));
                logger.Info("Task.Run Open start");
                transport.Open();
                logger.Info("Task.Run Open finish");
            }));
            return(this);
        }
Пример #3
0
        private void OnOpen()
        {
            LogManager logger = LogManager.GetLogger(Global.CallerName("", 0, ""));

            this.ReadyState = Socket.ReadyStateEnum.OPEN;
            Socket.PriorWebsocketSuccess = WebSocket.NAME == this.mTransport.Name;
            this.Flush();
            this.Emit(Socket.EVENT_OPEN);
            if (this.ReadyState != Socket.ReadyStateEnum.OPEN || !this.Upgrade || !(this.mTransport is Polling))
            {
                return;
            }
            logger.Info("OnOpen starting upgrade probes");
            this._errorCount = 0;
            foreach (string upgrade in this.Upgrades)
            {
                this.Probe(upgrade);
            }
        }