Esempio n. 1
0
        public override void Initialize(IDependencyResolver resolver, HostContext context)
        {
            if (resolver == null)
            {
                throw new ArgumentNullException("resolver");
            }

            if (context == null)
            {
                throw new ArgumentNullException("context");
            }

            _proxyGenerator  = resolver.Resolve <IJavaScriptProxyGenerator>();
            _manager         = resolver.Resolve <IHubManager>();
            _binder          = resolver.Resolve <IParameterResolver>();
            _requestParser   = resolver.Resolve <IHubRequestParser>();
            _pipelineInvoker = resolver.Resolve <IHubPipelineInvoker>();

            _counters = resolver.Resolve <IPerformanceCounterManager>();

            // Call base initializer before populating _hubs so the _jsonSerializer is initialized
            base.Initialize(resolver, context);

            // Populate _hubs
            string data = context.Request.QueryStringOrForm("connectionData");

            if (!String.IsNullOrEmpty(data))
            {
                var clientHubInfo = JsonSerializer.Parse <IEnumerable <ClientHubInfo> >(data);
                if (clientHubInfo != null)
                {
                    foreach (var hubInfo in clientHubInfo)
                    {
                        // Try to find the associated hub type
                        HubDescriptor hubDescriptor = _manager.EnsureHub(hubInfo.Name,
                                                                         _counters.ErrorsHubResolutionTotal,
                                                                         _counters.ErrorsHubResolutionPerSec,
                                                                         _counters.ErrorsAllTotal,
                                                                         _counters.ErrorsAllPerSec);

                        if (_pipelineInvoker.AuthorizeConnect(hubDescriptor, context.Request))
                        {
                            // Add this to the list of hub descriptors this connection is interested in
                            _hubs.Add(hubDescriptor);
                        }
                    }
                }
            }
        }