Я создаю веб-сайт с ASP.NET MVC5, размещенный на Azure.
Мои пользователи могут загружать видео, и я хотел бы создать индикатор выполнения или что-то, показывающее, сколько% загружать / транскодироватьбыло сделано.
Я следую этому учебному пособию Microsoft и видео правильно загружены.
Однако они показывают эти строки кода, как только задание добавлено в Azure:
job = job.StartExecutionProgressTask(
j =>
{
Console.WriteLine("Job state: {0}", j.State);
Console.WriteLine("Job progress: {0:0.##}%", j.GetOverallProgress());
},
CancellationToken.None).Result;
Я пытаюсь настроить его для отображения на своей веб-странице .
Вопрос
Однако я не могу "отправить«j.GetOverallProgress()
на мой взгляд.
Может кто-нибудь объяснить, как это сделать?
Что я до сих пор делал
Установите пакет Microsoft.AspNet.SignalR (v 2.4.1)
(впервые используя SignalR)
Добавьте эти строки в мойview:
<script src="~/Scripts/signalR/jquery.signalR-2.4.1.js"></script>
<script src="~/signalr/hubs"></script>
<script type="text/javascript">
$(document).ready(function () {
var hub = $.connection.videoService;
$("#btnCreate").on("click", function () {
hub.client.displayProgress = function (data) {
console.log(data); //Nothing is logged
};
})
});
</script>
И эти строки на моем бэкэнде: (VideoService.cs в папке \ Services)
public class VideoService : Hub
{
public EncodeMyVideo(...)
{
/* [...] */
job = job.StartExecutionProgressTask(j => {
displayProgress(job);
}, CancellationToken.None).Result;
}
public double displayProgress(IJob job)
{
return job.GetOverallProgress();
}
}
В режиме отладки он переходит на метод displayProgress
, ноникогда не отправлять что-либо в представление.
В качестве примечания я также попробовал следующее:
public void displayProgress(IJob job)
{
Clients.Caller.displayProgress(job.GetOverallProgress());
}
Но я получаю эту ошибку:
ИспользованиеЭкземпляр концентратора, не созданный HubPipeline, не поддерживается.
Я очень новичок в SignalR, и, несмотря на этот ответ SO , я не совсем понимаю, в чем проблема.
Что я должен сделать, чтобы отправить job.GetOverallProgress();
на мой взгляд?