【问题标题】:SignalR only client calling is getting the update from server. MVCSignalR 仅客户端调用正在从服务器获取更新。 MVC
【发布时间】:2019-04-01 03:36:21
【问题描述】:

我有一种情况,我从集线器响应中检索了我需要的内容,但它不会将其广播给所有用户,并且只有进行调用的用户会在浏览器上接收更新。

我的模型最初是

<button>
    <span id="MySpan">@Html.ValueFor(m => m.MyCount)</span>
</button>

这是我的功能:

myHubProxy.client.handleMyJob = function () 
{
    myHubProxy.server.getTheCounts().done(function (model) {
        var modelJson = JSON.parse(model);
        updateTheCounts(modelJson);
    });
};

$.connection.hub.start();

此时我在 modelJson 中有我需要的更新 #s 计数。

然后我的 updateTheCounts 如下:

 function updateTheCounts(model) {
    $('#MySpan").text(model.FirstCount);
 }

现在我获得了触发此请求的客户端的更新,但没有获得任何其他客户端的更新。

在我的 signalR 上,我指定所有人都应该收到..

更新:我的中心类

 context.Clients.All.handleMyJob();

 public string GetPrintJobsCounts()
 {
     var model = new SomeModel();        
     model.FirstCount = counts.MyCount ?? 0;
     return JsonConvert.SerializeObject(model).ToString();
 }

【问题讨论】:

  • 这是哪个信号器?用于.net 核心或框架的那个?你也可以更新你的中心类吗?
  • @Neville Nazerane 它是 .NET 框架。
  • ok 发布集线器类。因为您需要发送给该类的所有客户
  • @NevilleNazerane 你知道吗,除了这个之外,我还有其他一些有用的东西。
  • 我通常通过在 hub 类中运行 Clients.All 发送给所有客户端

标签: c# asp.net .net model-view-controller signalr


【解决方案1】:

由于您调用的是All.handleMyJob,因此您可以在js 中的集线器代理中使用On 函数。

myHubProxy.on("handleMyJob", function(){

});

但是如果你想在服务器端传递任何数据,你可以使用Clients.All.handleMyJob(someData),在js中你可以使用:

myHubProxy.on("handleMyJob", function(someData){

});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多