Manages the sessions to a Websocket service.
Example #1
0
        internal void Start(WebSocketContext context, WebSocketSessionManager sessions)
        {
            if (_websocket != null)
            {
                _websocket.Log.Error("This session has already been started.");
                context.WebSocket.Close(HttpStatusCode.ServiceUnavailable);

                return;
            }

            _context  = context;
            _sessions = sessions;

            _websocket = context.WebSocket;
            _websocket.CustomHandshakeRequestChecker = checkIfValidConnectionRequest;
            _websocket.IgnoreExtensions = _ignoreExtensions;
            _websocket.Protocol         = _protocol;

            var waitTime = sessions.WaitTime;

            if (waitTime != _websocket.WaitTime)
            {
                _websocket.WaitTime = waitTime;
            }

            _websocket.OnOpen    += onOpen;
            _websocket.OnMessage += onMessage;
            _websocket.OnError   += onError;
            _websocket.OnClose   += onClose;

            _websocket.ConnectAsServer();
        }
Example #2
0
        internal async Task Start(WebSocketContext context, WebSocketSessionManager sessions)
        {
            if (_websocket != null)
            {
                await context.WebSocket.InnerClose(HttpStatusCode.ServiceUnavailable).ConfigureAwait(false);

                return;
            }

            _context  = context;
            _sessions = sessions;

            _websocket = context.WebSocket;
            _websocket.CustomHandshakeRequestChecker = CheckIfValidConnectionRequest;
            _websocket.Protocol = _protocol;

            var waitTime = sessions.WaitTime;

            _websocket.WaitTime = waitTime;

            _websocket.SetOnOpen(InnerOnOpen);
            _websocket.SetOnMessage(OnMessage);
            _websocket.SetOnError(OnError);
            _websocket.SetOnClose(InnerOnClose);

            await _websocket.ConnectAsServer().ConfigureAwait(false);
        }
        internal string Add(IWebSocketSession session)
        {
            string str;
            object obj = this._sync;

            Monitor.Enter(obj);
            try
            {
                if (this._state == ServerState.Start)
                {
                    string str1 = WebSocketSessionManager.createID();
                    this._sessions.Add(str1, session);
                    str = str1;
                }
                else
                {
                    str = null;
                }
            }
            finally
            {
                Monitor.Exit(obj);
            }
            return(str);
        }
Example #4
0
        internal void Start(
            WebSocketContext context, WebSocketSessionManager sessions
            )
        {
            _context  = context;
            _sessions = sessions;

            _websocket = context.WebSocket;
            _websocket.CustomHandshakeRequestChecker = checkHandshakeRequest;
            _websocket.EmitOnPing       = _emitOnPing;
            _websocket.IgnoreExtensions = _ignoreExtensions;
            _websocket.Protocol         = _protocol;

            var waitTime = sessions.WaitTime;

            if (waitTime != _websocket.WaitTime)
            {
                _websocket.WaitTime = waitTime;
            }

            _websocket.OnOpen    += onOpen;
            _websocket.OnMessage += onMessage;
            _websocket.OnError   += onError;
            _websocket.OnClose   += onClose;

            _websocket.InternalAccept();
        }
 internal WebSocketServiceHost(string path, Func <TBehavior> initializer, Logger logger)
 {
     _path        = path;
     _initializer = initializer;
     _logger      = logger;
     _sessions    = new WebSocketSessionManager(logger);
 }
Example #6
0
        internal void Start(WebSocketContext context, WebSocketSessionManager sessions)
        {
            if (_websocket != null)
            {
                //_websocket.Log.Error ("A session instance cannot be reused.");
                context.WebSocket.Close(HttpStatusCode.ServiceUnavailable);

                return;
            }

            _context  = context;
            _sessions = sessions;

            _websocket = context.WebSocket;
            _websocket.CustomHandshakeRequestChecker = checkHandshakeRequest;
            _websocket.EmitOnPing       = _emitOnPing;
            _websocket.IgnoreExtensions = _ignoreExtensions;
            _websocket.Protocol         = _protocol;

            var waitTime = sessions.WaitTime;

            if (waitTime != _websocket.WaitTime)
            {
                _websocket.WaitTime = waitTime;
            }

            _websocket.OnOpen    += onOpen;
            _websocket.OnMessage += onMessage;
            _websocket.OnError   += onError;
            _websocket.OnClose   += onClose;

            _websocket.InternalAccept();
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="WebSocketServiceHost"/> class
        /// with the specified <paramref name="path"/> and <paramref name="log"/>.
        /// </summary>
        /// <param name="path">
        /// A <see cref="string"/> that represents the absolute path to the service.
        /// </param>
        /// <param name="log">
        /// A <see cref="Logger"/> that represents the logging function for the service.
        /// </param>
        protected WebSocketServiceHost(string path, Logger log)
        {
            _path = path;
            _log  = log;

            _sessions = new WebSocketSessionManager(log);
        }
Example #8
0
 internal void Start(WebSocketContext context, WebSocketSessionManager sessions)
 {
     if (this._websocket != null)
     {
         this._websocket.Log.Error("This session has already been started.");
         context.WebSocket.Close(HttpStatusCode.ServiceUnavailable);
     }
     else
     {
         this._context   = context;
         this._sessions  = sessions;
         this._websocket = context.WebSocket;
         this._websocket.CustomHandshakeRequestChecker = new Func <WebSocketContext, string>(this.checkHandshakeRequest);
         this._websocket.EmitOnPing       = this._emitOnPing;
         this._websocket.IgnoreExtensions = this._ignoreExtensions;
         this._websocket.Protocol         = this._protocol;
         TimeSpan waitTime = sessions.WaitTime;
         if (waitTime != this._websocket.WaitTime)
         {
             this._websocket.WaitTime = waitTime;
         }
         this._websocket.OnOpen    += new EventHandler(this.onOpen);
         this._websocket.OnMessage += new EventHandler <MessageEventArgs>(this.onMessage);
         this._websocket.OnError   += new EventHandler <ErrorEventArgs>(this.onError);
         this._websocket.OnClose   += new EventHandler <CloseEventArgs>(this.onClose);
         this._websocket.InternalAccept();
     }
 }
Example #9
0
 public ServiceCandleMarket()
 {
     Starter.core.Candles.CollectionChanged          += BData_CollectionChanged;
     Starter.core.BDataTradeBuyer.CollectionChanged  += BDataTradeBuyer_CollectionChanged;
     Starter.core.BDataTradeSeller.CollectionChanged += BDataTradeSeller_CollectionChanged;
     this.Manager = this.Sessions;
     //Starter.core.GetDataFromTo(From: DateTime.Now.AddDays(-1), To: DateTime.Now, Symbol: "ETHUSDT");
 }
Example #10
0
        internal void Start(WebSocketContext context, WebSocketSessionManager sessions)
        {
            _context   = context;
            _sessions  = sessions;
            _websocket = context.WebSocket;
            _websocket.CookiesValidation = ValidateCookies;
            _websocket.OnOpen           += onOpen;
            _websocket.OnMessage        += onMessage;
            _websocket.OnError          += onError;
            _websocket.OnClose          += onClose;

            _websocket.Connect();
        }
Example #11
0
 internal void Start(WebSocketContext context, WebSocketSessionManager sessions)
 {
     this._context            = context;
     this._sessions           = sessions;
     this._websocket          = context.WebSocket;
     this._websocket.Protocol = this._protocol;
     this._websocket.CustomHandshakeRequestChecker = new Func <WebSocketContext, string>(this.checkIfValidConnectionRequest);
     this._websocket.OnOpen    += this.onOpen;
     this._websocket.OnMessage += this.onMessage;
     this._websocket.OnError   += this.onError;
     this._websocket.OnClose   += this.onClose;
     this._websocket.ConnectAsServer();
 }
        internal void Start(WebSocketContext context, WebSocketSessionManager sessions)
        {
            _context  = context;
            _sessions = sessions;

            _websocket          = context.WebSocket;
            _websocket.Protocol = _protocol;
            _websocket.CustomHandshakeRequestChecker = checkIfValidConnectionRequest;

            _websocket.OnOpen    += onOpen;
            _websocket.OnMessage += onMessage;
            _websocket.OnError   += onError;
            _websocket.OnClose   += onClose;

            _websocket.ConnectAsServer();
        }
Example #13
0
        internal string Add(IWebSocketSession session)
        {
            object sync = this._sync;
            string result;

            lock (sync)
            {
                if (this._state != ServerState.Start)
                {
                    result = null;
                }
                else
                {
                    string text = WebSocketSessionManager.createID();
                    this._sessions.Add(text, session);
                    result = text;
                }
            }
            return(result);
        }
Example #14
0
 protected override void OnOpen() {
   if(_wsMan==null) {
     _wsMan=Sessions;
   }
   string sid=null;
   if(Context.CookieCollection["sessionId"]!=null) {
     sid=Context.CookieCollection["sessionId"].Value;
   }
   System.Net.IPEndPoint remoteEndPoint = Context.UserEndPoint;
   {
     System.Net.IPAddress remIP;
     if(Context.Headers.Contains("X-Real-IP") && System.Net.IPAddress.TryParse(Context.Headers["X-Real-IP"], out remIP)) {
       remoteEndPoint=new System.Net.IPEndPoint(remIP, remoteEndPoint.Port);
     }
   }
   _ses=Session.Get(sid, remoteEndPoint);
   _subscriptions=new List<Topic.Subscription>();
   Send(string.Concat("I\t", _ses.id, "\t", (string.IsNullOrEmpty(_ses.userName)?(_disAnonym.value?"false":"null"):"true")));
   if(_verbose.value) {
     X13.Log.Debug("{0} connect webSocket", _ses.owner.name);
   }
 }
        internal void Start(WebSocketContext context, WebSocketSessionManager sessions)
        {
            if (_websocket != null) {
            _websocket.Log.Error ("This session has already been started.");
            context.WebSocket.Close (HttpStatusCode.ServiceUnavailable);

            return;
              }

              _context = context;
              _sessions = sessions;

              _websocket = context.WebSocket;
              _websocket.CustomHandshakeRequestChecker = checkIfValidConnectionRequest;
              _websocket.EmitOnPing = _emitOnPing;
              _websocket.IgnoreExtensions = _ignoreExtensions;
              _websocket.Protocol = _protocol;

              var waitTime = sessions.WaitTime;
              if (waitTime != _websocket.WaitTime)
            _websocket.WaitTime = waitTime;

              _websocket.OnOpen += onOpen;
              _websocket.OnMessage += onMessage;
              _websocket.OnError += onError;
              _websocket.OnClose += onClose;

              _websocket.ConnectAsServer ();
        }
Example #16
0
        internal void Start(WebSocketContext context, WebSocketSessionManager sessions)
        {
            _context = context;
              _sessions = sessions;

              _websocket = context.WebSocket;
              _websocket.Protocol = _protocol;
              _websocket.CookiesValidation = ValidateCookies;

              _websocket.OnOpen += onOpen;
              _websocket.OnMessage += onMessage;
              _websocket.OnError += onError;
              _websocket.OnClose += onClose;

              _websocket.ConnectAsServer ();
        }
Example #17
0
 protected override void OnOpen()
 {
     base.OnOpen();
     this.Manager = this.Sessions;
     Console.WriteLine("New Client : {0}", this.Sessions.Sessions.Last().ID);
 }
        internal void Bind(WebSocketContext context, WebSocketSessionManager sessions)
        {
            if (IsBound)
                return;

            if (!ProcessCookies(context.CookieCollection, context.WebSocket.CookieCollection))
            {
                context.WebSocket.Close(HttpStatusCode.BadRequest);
                return;
            }

            _context = context;
            _sessions = sessions;

            var _websocket = _context.WebSocket;
            _websocket.OnOpen += onOpen;
            _websocket.OnMessage += onMessage;
            _websocket.OnError += onError;
            _websocket.OnClose += onClose;

            IsBound = true;
        }
Example #19
0
 internal WebSocketServiceHost(string path, Func <T> constructor, Logger logger)
 {
     this._path        = HttpUtility.UrlDecode(path).TrimEndSlash();
     this._constructor = constructor;
     this._sessions    = new WebSocketSessionManager(logger);
 }
Example #20
0
        internal void Start(WebSocketContext context, WebSocketSessionManager sessions)
        {
            if (_websocket != null) {
            _websocket.Log.Error ("A session instance cannot be reused.");
            context.WebSocket.Close (HttpStatusCode.ServiceUnavailable);

            return;
              }

              _context = context;
              _sessions = sessions;

              _websocket = context.WebSocket;
              _websocket.CustomHandshakeRequestChecker = checkHandshakeRequest;
              _websocket.EmitOnPing = _emitOnPing;
              _websocket.IgnoreExtensions = _ignoreExtensions;
              _websocket.Protocol = _protocol;

              var waitTime = sessions.WaitTime;
              if (waitTime != _websocket.WaitTime)
            _websocket.WaitTime = waitTime;

              _websocket.OnOpen += onOpen;
              _websocket.OnMessage += onMessage;
              _websocket.OnError += onError;
              _websocket.OnClose += onClose;

              _websocket.InternalAccept ();
        }
Example #21
0
        internal void Bind(WebSocketContext context, WebSocketSessionManager sessions)
        {
            if (IsBound)
            return;

              _context = context;
              _sessions = sessions;
              _websocket = context.WebSocket;
              _websocket.CookiesValidation = ValidateCookies;
              _websocket.OnOpen += onOpen;
              _websocket.OnMessage += onMessage;
              _websocket.OnError += onError;
              _websocket.OnClose += onClose;

              IsBound = true;
        }