2013-04-19 3 views
1

Я пытаюсь настроить кварц для передачи значений клиенту с использованием SSE (события, отправленные сервером). То, что я хотел бы сделать, это вызвать ActionResult в контроллере каждые 5 секунд, чтобы отправить обновленное значение клиенту. В настоящее время у меня есть Quartz, чтобы запустить метод Execute()MtGoxTickerJob, класс, полученный от IJob. Я не могу вызвать ActionResult таким образом, потому что MtGoxTickerJob находится вне контекста контроллера (кажется, есть способы сделать это, но все уродливые обходные пути). Есть ли способ настроить MVC ActionResult в качестве задания, инициированного планировщиком кварца?Вызов MVC ActionResult с кварцем

//Quartz Scheduler 

     // construct a scheduler factory 
     ISchedulerFactory schedFact = new StdSchedulerFactory(); 
     // get a scheduler 
     IScheduler sched = schedFact.GetScheduler(); 


     IJobDetail jobDetail = JobBuilder.Create<MtGoxTickerJob>() 
     .WithIdentity("TestJob") 
     .Build(); 
     ITrigger trigger = TriggerBuilder.Create() 
      .ForJob(jobDetail) 
      .WithCronSchedule("0/5 * * * * ?") 
      .WithIdentity("TestTrigger") 
      .StartNow() 
      .Build(); 
     sched.ScheduleJob(jobDetail, trigger); 
     sched.Start(); 
+0

Я не думаю, что вы сможете получить то, что вам нужно здесь. Это не то, как работает протокол HTTP (запрос -> ответ). Вы считали SignalR http://signalr.net/? Пример: http://www.asp.net/signalr/overview/getting-started/tutorial-server-broadcast-with-aspnet-signalr –

+0

Я посмотрел на signalR - но серверные события предположительно более эффективны? http://blogs.microsoft.co.il/blogs/gilf/archive/2012/04/10/using-html5-server-sent-events-with-json-and-asp-net-mvc.aspx – valen

+0

Не уверен что более эффективно - я думаю, что его нужно судить. Что касается используемого подхода, вы упомянули: насколько я вижу, нет необходимости вообще обращаться к материалам MVC. Вы должны поместить свои события в статический BlockingCollection (например, в задание Quartz), а затем выполнить действие, которое будет обрабатываться javascript для получения списка событий (или последнего события). –

ответ

0

Как насчет того, чтобы сделать звонок к действию с помощью обычного http-клиента? В конце концов, если он возвращает actionresult, вы должны, вероятно, сделать ему http-вызов.

Смежные вопросы