Пример #1
0
        public void Handle(BrokeredMessage brokeredMessage, QueueClient queue)
        {
            var message = brokeredMessage.GetBody <GoToUrlMessage>();
            var browser = _sessions.GetOrAdd(message.SessionId, new OffscreenBrowser());

            while (browser.GetBrowser() == null)
            {
                Thread.Sleep(50);
            }

            browser.GetBrowser().GetMainFrame().LoadUrl(message.Url);

            var loaded = WaitForBrowserLoadingAsync(browser).Result;

            if (!loaded)
            {
                return;
            }

            var visitor = new SourceVisitor(s =>
            {
                Console.Write(s);

                var fileName = $"{message.SessionId}-{Guid.NewGuid()}";
                _storage.CreateOrUpdate(fileName, s);
                var reply = new ContentReadyMessage()
                {
                    SessionId = message.SessionId,
                    FileName  = fileName
                };
                queue.Send(reply.ToBrokeredMessage());
                CompletedEvent.Set();
            });

            browser.GetBrowser().GetMainFrame().GetSource(visitor);
            CompletedEvent.WaitOne();
        }