簡體   English   中英

SignalR 從客戶端發送數據

[英]SignalR sending data from client

我想使用 SignalR 將數據從服務器端發送到客戶端。 我在這里有一個Task來迭代工作。 此作業從 SignalR 繼承Hub類,它在其中發送迭代的當前進度。 但是它不會返回我從服務器端發送的數據。

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);
}

在 JS 上調用 SignalR

var progressNotifier = $.connection.progressHub;

console.log(progressNotifier);

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

console.log(currentRow);
};

$.connection.hub.start();

嘗試以不同的方式定義和分配您的功能。 例如如下:

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

progressNotifier.client.addProgress = onAddProgress;

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

$.connection.hub.start();

我還建議您對這些類型的函數使用單個參數,過去我在使用多個參數時遇到了一些問題。 您可以傳遞單個 Json 消息並稍后對其進行反序列化。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM