【问题标题】:How do I get "Others" working with ASP.NET SignalR?如何让“其他人”使用 ASP.NET SignalR?
【发布时间】:2017-04-26 06:41:40
【问题描述】:

我正在尝试编写一个不会将消息 ping 回调用者的 SignalR 集线器。我已经实现了一个名为“BatteryChanged”的处理程序,它只是在所有连接的客户端中调用“onBatteryChanged”。我的理解是应该使用Others来过滤掉调用者:

public class MyHub : Hub
{
    public void BatteryChanged(double level)
    {
        Clients.Others.onBatteryChanged(level);
    }
}

我的唯一客户端(至少对于这个测试)是一个 WPF 应用程序,它像这样初始化连接:

Connection = new HubConnection(ServerURI);
HubProxy = Connection.CreateHubProxy("myHub");

// set up SignalR handlers
HubProxy.On<double>("onBatteryChanged", (battery) =>
{
    // do something with the message here
});

一旦建立连接,我的 WPF 客户端就会调用集线器上的方法:

this.HubProxy.Invoke("BatteryChanged", level);

由于某种原因,这不起作用,消息到达集线器并被分派给 Clients.Others,但调用客户端中的 onBatteryChanged 处理程序也会被调用。

谁能告诉我如何让 SignalR 正确过滤消息?

【问题讨论】:

    标签: signalr


    【解决方案1】:

    对于将来偶然发现此问题的任何其他人来说,问题显然是命名法之一。具体来说,我的集线器函数包含一个名为“BatteryChanged”的方法,该方法在客户端调用一个名为“onBatteryChanged”的方法。看起来 SignalR 内部发生了一些事情,他们在“BatteryChanged”方法前面加上“on”,这会产生命名冲突。只需将“onBatteryChanged”函数的名称更改为“handleBatteryChanged”即可解决问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-11-16
      • 1970-01-01
      • 2014-02-17
      • 2021-05-04
      • 1970-01-01
      • 2018-10-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多