Esempio n. 1
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;
            }

            _webSocketContext = context;
            _sessions         = sessions;

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

            var waitTime = sessions.WaitTime;

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

            _websocket.OnOpen    += HandleOnOpen;
            _websocket.OnMessage += HandleOnMessage;
            _websocket.OnError   += HandleOnError;
            _websocket.OnClose   += HandleOnClose;

            _websocket.AcceptClientOnServer();
        }