Exemple #1
0
        private Task ProcessNegotiationRequest(HostContext context)
        {
            // Total amount of time without a keep alive before the client should attempt to reconnect in seconds.
            var    keepAliveTimeout = _configurationManager.KeepAliveTimeout();
            string connectionId     = Guid.NewGuid().ToString("d");
            string connectionToken  = connectionId + ':' + GetUserIdentity(context);

            var payload = new
            {
                Url                = context.Request.Url.LocalPath.Replace("/negotiate", ""),
                ConnectionToken    = ProtectedData.Protect(connectionToken, Purposes.ConnectionToken),
                ConnectionId       = connectionId,
                KeepAliveTimeout   = keepAliveTimeout != null ? keepAliveTimeout.Value.TotalSeconds : (double?)null,
                DisconnectTimeout  = _configurationManager.DisconnectTimeout.TotalSeconds,
                TryWebSockets      = _transportManager.SupportsTransport(WebSocketsTransportName) && context.SupportsWebSockets(),
                WebSocketServerUrl = context.WebSocketServerUrl(),
                ProtocolVersion    = "1.2"
            };

            if (!String.IsNullOrEmpty(context.Request.QueryString["callback"]))
            {
                return(ProcessJsonpRequest(context, payload));
            }

            context.Response.ContentType = JsonUtility.JsonMimeType;
            return(context.Response.End(JsonSerializer.Stringify(payload)));
        }
Exemple #2
0
        private Task ProcessNegotiationRequest(HostContext context)
        {
            var keepAlive = _configurationManager.KeepAlive;
            var payload   = new
            {
                Url                = context.Request.Url.LocalPath.Replace("/negotiate", ""),
                ConnectionId       = _connectionIdPrefixGenerator.GenerateConnectionIdPrefix(context.Request) + Guid.NewGuid().ToString("d"),
                KeepAlive          = (keepAlive != null) ? keepAlive.Value.TotalSeconds : (double?)null,
                TryWebSockets      = _transportManager.SupportsTransport(WebSocketsTransportName) && context.SupportsWebSockets(),
                WebSocketServerUrl = context.WebSocketServerUrl(),
                ProtocolVersion    = "1.0"
            };

            if (!String.IsNullOrEmpty(context.Request.QueryString["callback"]))
            {
                return(ProcessJsonpNegotiationRequest(context, payload));
            }

            context.Response.ContentType = Json.MimeType;
            return(context.Response.EndAsync(_jsonSerializer.Stringify(payload)));
        }
        private Task ProcessNegotiationRequest(HostContext context)
        {
            var keepAlive = _configurationManager.KeepAlive;
            var payload = new
            {
                Url = context.Request.Url.LocalPath.Replace("/negotiate", ""),
                ConnectionId = _connectionIdPrefixGenerator.GenerateConnectionIdPrefix(context.Request) + Guid.NewGuid().ToString("d"),
                KeepAlive = (keepAlive != null) ? keepAlive.Value.TotalSeconds : (double?)null,
                TryWebSockets = _transportManager.SupportsTransport(WebSocketsTransportName) && context.SupportsWebSockets(),
                WebSocketServerUrl = context.WebSocketServerUrl(),
                ProtocolVersion = "1.0"
            };

            if (!String.IsNullOrEmpty(context.Request.QueryString["callback"]))
            {
                return ProcessJsonpNegotiationRequest(context, payload);
            }

            context.Response.ContentType = Json.MimeType;
            return context.Response.EndAsync(_jsonSerializer.Stringify(payload));
        }