Exemple #1
0
        // As Server
        private bool receiveOpeningHandshake()
        {
      #if DEBUG
            var req = RequestHandshake.Parse(_context);
            Console.WriteLine("WS: Info@receiveOpeningHandshake: Opening handshake from client:\n");
            Console.WriteLine(req.ToString());
      #endif
            if (!checkRequestIsValid())
            {
                onError("Invalid WebSocket connection request.");
                close(HttpStatusCode.BadRequest);
                return(false);
            }

            _base64key = _context.SecWebSocketKey;
            if (_context.Headers.Exists("Sec-WebSocket-Protocol"))
            {
                _protocols = _context.Headers["Sec-WebSocket-Protocol"];
            }

            if (_context.Headers.Exists("Sec-WebSocket-Extensions"))
            {
                _extensions = _context.Headers["Sec-WebSocket-Extensions"];
            }

            return(true);
        }
Exemple #2
0
        // As Client
        private RequestHandshake createOpeningHandshake()
        {
            var path = _uri.PathAndQuery;
            var host = _uri.DnsSafeHost;
            var port = ((System.Net.IPEndPoint)_tcpClient.Client.RemoteEndPoint).Port;

            if (port != 80)
            {
                host += ":" + port;
            }

            var req = new RequestHandshake(path);

            req.AddHeader("Host", host);
            req.AddHeader("Sec-WebSocket-Key", _base64key);
            if (!Ext.IsNullOrEmpty(_protocols))
            {
                req.AddHeader("Sec-WebSocket-Protocol", _protocols);
            }
            req.AddHeader("Sec-WebSocket-Version", _version);
            if (!string.IsNullOrEmpty(this._origin))
            {
                req.AddHeader("Origin", this._origin);
            }
            //extra headers
            if (this.ExtraHeaders != null)
            {
                foreach (var i in this.ExtraHeaders)
                {
                    req.AddHeader(i.Key, i.Value);
                }
            }

            return(req);
        }
Exemple #3
0
   // As Client
   private void sendRequestHandshake(RequestHandshake request)
   {
 #if DEBUG
       Console.WriteLine("WS: Info@sendRequestHandshake: Request handshake from client:\n");
       Console.WriteLine(request.ToString());
 #endif
       writeHandshake(request);
   }
   // As client
   private void send(RequestHandshake request)
   {
 #if DEBUG
       Console.WriteLine("WS: Info@send: Request handshake to server:\n");
       Console.WriteLine(request.ToString());
 #endif
       _wsStream.Write(request);
   }
Exemple #5
0
        // As Server
        private RequestHandshake receiveOpeningHandshake()
        {
            var req = RequestHandshake.Parse(_context);

      #if DEBUG
            Console.WriteLine("WS: Info@receiveOpeningHandshake: Opening handshake from client:\n");
            Console.WriteLine(req.ToString());
      #endif
            return(req);
        }
Exemple #6
0
        // As Client
        private RequestHandshake createOpeningHandshake()
        {
            var path = _uri.PathAndQuery;
            var host = _uri.Port == 80
               ? _uri.DnsSafeHost
               : _uri.Authority;

            var req = new RequestHandshake(path);

            req.AddHeader("Host", host);
            req.AddHeader("Sec-WebSocket-Key", _base64key);
            if (!_protocols.IsNullOrEmpty())
            {
                req.AddHeader("Sec-WebSocket-Protocol", _protocols);
            }
            req.AddHeader("Sec-WebSocket-Version", _version);

            return(req);
        }
Exemple #7
0
        // As Client
        private RequestHandshake createOpeningHandshake()
        {
            var path = _uri.PathAndQuery;
            var host = _uri.DnsSafeHost;
            var port = ((System.Net.IPEndPoint)_tcpClient.Client.RemoteEndPoint).Port;

            if (port != 80)
            {
                host += ":" + port;
            }

            var req = new RequestHandshake(path);

            req.AddHeader("Host", host);
            req.AddHeader("Sec-WebSocket-Key", _base64key);
            if (!_protocols.IsNullOrEmpty())
            {
                req.AddHeader("Sec-WebSocket-Protocol", _protocols);
            }
            req.AddHeader("Sec-WebSocket-Version", _version);

            return(req);
        }
Exemple #8
0
        // As Server
        private bool isValidRequest(RequestHandshake request, out string message)
        {
            if (!request.IsWebSocketRequest)
            {
                message = "Invalid WebSocket request.";
                return(false);
            }

            if (_uri.IsAbsoluteUri && !isValidRequestHost(request.Headers["Host"], out message))
            {
                return(false);
            }

            if (!request.HeaderExists("Sec-WebSocket-Version", _version))
            {
                message = "Unsupported Sec-WebSocket-Version.";
                return(false);
            }

            _base64key = request.Headers["Sec-WebSocket-Key"];

            if (request.HeaderExists("Sec-WebSocket-Protocol"))
            {
                _protocols = request.Headers["Sec-WebSocket-Protocol"];
            }

            if (request.HeaderExists("Sec-WebSocket-Extensions"))
            {
                _extensions = request.Headers["Sec-WebSocket-Extensions"];
            }

            _queryString = request.QueryString;

            message = String.Empty;
            return(true);
        }
Exemple #9
0
 // As client
 private ResponseHandshake sendRequestHandshake(RequestHandshake request)
 {
     send(request);
       return receiveResponseHandshake();
 }
Exemple #10
0
 // As client
 private void send(RequestHandshake request)
 {
     #if DEBUG
       Console.WriteLine("WS: Info@send: Request handshake to server:\n");
       Console.WriteLine(request.ToString());
       #endif
       _wsStream.WriteHandshake(request);
 }
Exemple #11
0
        // As client
        private RequestHandshake createRequestHandshake()
        {
            var path = _uri.PathAndQuery;
              var host = _uri.Port == 80
               ? _uri.DnsSafeHost
               : _uri.Authority;

              var req = new RequestHandshake(path);
              req.AddHeader("Host", host);

              if (_origin.Length > 0)
            req.AddHeader("Origin", _origin);

              req.AddHeader("Sec-WebSocket-Key", _base64key);

              if (!_protocols.IsNullOrEmpty())
            req.AddHeader("Sec-WebSocket-Protocol", _protocols);

              var extensions = createRequestExtensions();
              if (extensions.Length > 0)
            req.AddHeader("Sec-WebSocket-Extensions", extensions);

              req.AddHeader("Sec-WebSocket-Version", _version);

              if (_preAuth && _credentials != null)
            req.SetAuthorization(new AuthenticationResponse(_credentials));

              if (_cookies.Count > 0)
            req.SetCookies(_cookies);

              return req;
        }
Exemple #12
0
        // As Server
        private bool isValidRequest(RequestHandshake request, out string message)
        {
            if (!request.IsWebSocketRequest)
            {
                message = "Invalid WebSocket request.";
                return false;
            }

            if (_uri.IsAbsoluteUri && !isValidRequestHost(request.Headers["Host"], out message))
                return false;

            if (!request.HeaderExists("Sec-WebSocket-Version", _version))
            {
                message = "Unsupported Sec-WebSocket-Version.";
                return false;
            }

            _base64key = request.Headers["Sec-WebSocket-Key"];

            if (request.HeaderExists("Sec-WebSocket-Protocol"))
                _protocols = request.Headers["Sec-WebSocket-Protocol"];

            if (request.HeaderExists("Sec-WebSocket-Extensions"))
                _extensions = request.Headers["Sec-WebSocket-Extensions"];

            _queryString = request.QueryString;

            message = String.Empty;
            return true;
        }
Exemple #13
0
        // As Client
        private RequestHandshake createOpeningHandshake()
        {
            var path = _uri.PathAndQuery;
            var host = _uri.DnsSafeHost;
            var port = ((System.Net.IPEndPoint)_tcpClient.Client.RemoteEndPoint).Port;
            if (port != 80)
                host += ":" + port;

            var req = new RequestHandshake(path);
            req.AddHeader("Host", host);
            req.AddHeader("Sec-WebSocket-Key", _base64key);
            if (!Ext.IsNullOrEmpty(_protocols))
                req.AddHeader("Sec-WebSocket-Protocol", _protocols);
            req.AddHeader("Sec-WebSocket-Version", _version);
            if (!string.IsNullOrEmpty(this._origin))
                req.AddHeader("Origin", this._origin);
            //extra headers
            if (this.ExtraHeaders != null)
                foreach (var i in this.ExtraHeaders)
                    req.AddHeader(i.Key, i.Value);

            return req;
        }
Exemple #14
0
        // As Client
        private void sendOpeningHandshake(RequestHandshake request)
        {
#if DEBUG
            Console.WriteLine("WS: Info@sendOpeningHandshake: Opening handshake from client:\n");
            Console.WriteLine(request.ToString());
#endif
            writeHandshake(request);
        }
        // As Client
        private RequestHandshake createOpeningHandshake()
        {
            var path = _uri.PathAndQuery;
              var host = _uri.DnsSafeHost;
              var port = ((System.Net.IPEndPoint)_tcpClient.Client.RemoteEndPoint).Port;
              if (port != 80)
            host += ":" + port;

              var req = new RequestHandshake(path);
              req.AddHeader("Host", host);
              req.AddHeader("Sec-WebSocket-Key", _base64key);
              if (!_protocols.IsNullOrEmpty())
            req.AddHeader("Sec-WebSocket-Protocol", _protocols);
              req.AddHeader("Sec-WebSocket-Version", _version);

              return req;
        }
        // As client
        private RequestHandshake createRequestHandshake()
        {
            var path = _uri.PathAndQuery;
              var host = _uri.Port == 80
               ? _uri.DnsSafeHost
               : _uri.Authority;

              var req = new RequestHandshake(path);
              req.AddHeader("Host", host);
              req.AddHeader("Sec-WebSocket-Key", _base64key);
              if (!_protocols.IsNullOrEmpty())
            req.AddHeader("Sec-WebSocket-Protocol", _protocols);
              req.AddHeader("Sec-WebSocket-Version", _version);
              if (_cookies.Count > 0)
            req.SetCookies(_cookies);

              return req;
        }