SignalR отправляет данные от клиента - PullRequest
0 голосов
/ 26 сентября 2018

Я хотел отправить данные со стороны сервера на сторону клиента, используя SignalR.У меня есть Task здесь, который перебирает работу.Это задание наследует класс Hub от SignalR, куда он отправляет текущий ход итерации.Однако он не вернет мне данные, которые я отправил со стороны сервера.

public async Task loop()
{
    ProgressHub p = new ProgressHub();

    for(var i = 0; i < 100; i++){
        await p.SendProgress(i, 100);
    }
}

public async Task SendProgress(int currentRow, int rowCount)
{
   string message = "Initializing and Preparing...";
   int percent = (currentRow * 100) / rowCount;


    var hubContext = GlobalHost.ConnectionManager.GetHubContext<ProgressHub>();
    var percentage = (currentRow * 100) / rowCount;

    hubContext.Clients.All.AddProgress(message, percent + "%");

    await Task.Delay(100);
}

Метод цикла вызова на контроллере.

public async Task<JsonResult> CallSignalR()
{
    await loop();

    return Json("", JsonRequestBehavior.AllowGet);
}

Вызов SignalR на JS

var progressNotifier = $.connection.progressHub;

console.log(progressNotifier);

progressNotifier.client.addProgress = function (currentRow, rowCount) {

console.log(currentRow);
};

$.connection.hub.start();

1 Ответ

0 голосов
/ 26 сентября 2018

Попробуйте определить и назначить свою функцию по-другому.Например, следующим образом:

var progressNotifier = $.connection.progressHub;
console.log(progressNotifier);

progressNotifier.client.addProgress = onAddProgress;

function onAddProgress(currentRow, rowCount) {
    console.log(currentRow);
};

$.connection.hub.start();

Я также предлагаю вам использовать один параметр для такого рода функций, в прошлом у меня были некоторые проблемы с несколькими параметрами.Вы можете передать одно сообщение Json и десериализовать его позже.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...