Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用信号器意外发送多条消息_C#_Signalr - Fatal编程技术网

C# 使用信号器意外发送多条消息

C# 使用信号器意外发送多条消息,c#,signalr,C#,Signalr,我是新来的信号员,但我理解这个概念 我的目标是公开web服务,调用web服务时将更新所有连接的客户端。我已经构建了一个小的knockout js来连接到hub,并且工作得很好。当我点击我的开始按钮时,它会像预期的那样向每个连接的客户端发送一条消息。以下是背景代码 枢纽: JS: MVC API: public class HomeController : Controller { public ActionResult Update() { GetClients(

我是新来的信号员,但我理解这个概念

我的目标是公开web服务,调用web服务时将更新所有连接的客户端。我已经构建了一个小的knockout js来连接到hub,并且工作得很好。当我点击我的开始按钮时,它会像预期的那样向每个连接的客户端发送一条消息。以下是背景代码

枢纽:

JS:

MVC API:

public class HomeController : Controller
{
    public ActionResult Update()
    {
        GetClients().updateFlash("From server");

        return Json(new { result = "ok" }, JsonRequestBehavior.AllowGet);
    }

    private static dynamic GetClients()
    {
        return GlobalHost.ConnectionManager.GetHubContext<RealTimeData.Hubs.RealTimeDataHub>().Clients;
    }
}
公共类HomeController:控制器
{
公共行动结果更新()
{
GetClients().updateFlash(“来自服务器”);
返回Json(新的{result=“ok”},JsonRequestBehavior.AllowGet);
}
私有静态动态GetClients()
{
返回GlobalHost.ConnectionManager.GetHubContext().Clients;
}
}
问题是:

当我从控制器(Home/Update,还不是真正的API)调用“Update”方法时,它会为每个连接的客户端发送一个信号。所以,如果我连接了两个客户端,我将向每个客户端发送两条“来自服务器”的消息,以此类推。我只想要一个

有什么建议吗?任何事都值得感激

谢谢

马特解决方案:

必须导入“using Signal.Client;”

public ActionResult Update()
{
    hub.Invoke("UpdateFlash", "From the Home Controller");
    //GetClients().updateFlash("From server");
    return Json(new { result = "ok" }, JsonRequestBehavior.AllowGet);
}
以下是我找到解决方案的地方:

我希望这能帮助一些人

马特

public class HomeController : Controller
{
    public ActionResult Update()
    {
        GetClients().updateFlash("From server");

        return Json(new { result = "ok" }, JsonRequestBehavior.AllowGet);
    }

    private static dynamic GetClients()
    {
        return GlobalHost.ConnectionManager.GetHubContext<RealTimeData.Hubs.RealTimeDataHub>().Clients;
    }
}
public ActionResult Update()
{
    hub.Invoke("UpdateFlash", "From the Home Controller");
    //GetClients().updateFlash("From server");
    return Json(new { result = "ok" }, JsonRequestBehavior.AllowGet);
}