【发布时间】:2017-10-25 23:19:04
【问题描述】:
我有一个场景,其中一个客户端正在向 Hub 类方法 AddMessage 发送请求,该方法又应该将该消息广播给所有客户端,包括发起它的客户端。
问题是我可以从客户端调用 Hub 方法AddMessage,如下面的代码所示,但是我找不到在客户端上处理广播消息的方法,该消息在Hub 类使用以下行。
Clients.All.NotifyMessageToClients(name, message);
SignalR 集线器类
using System;
using Microsoft.AspNet.SignalR;
using System.Threading.Tasks;
public class SignalRChatHub : Hub
{
public void AddMessage(string name, string message)
{
// Following call is supposed to notify all clients with passed parameters.
// They could have a method called NotifyMessageToClients to fetch the broadcasted message
Clients.All.NotifyMessageToClients(name, message);
}
}
SignalR 客户端
using System;
using Microsoft.AspNet.SignalR.Client;
public partial class Default : System.Web.UI.Page
{
HubConnection hubConnection;
IHubProxy stockTickerHubProxy;
public Default()
{
hubConnection = new HubConnection("http://localhost:6898/");
stockTickerHubProxy = hubConnection.CreateHubProxy("SignalRChatHub");
}
async public void SendAddNotification(string msgFrom, string msg)
{
// Following line calls Addmessage method in SignalRChatHub class
await stockTickerHubProxy.Invoke("Addmessage", "Ajendra", "Hello StackOverflow");
}
// I might need the method NotifyMessageToClients here... to receive broadcasted message
}
我对如何在 jQuery 中实现相同的功能有了一些想法,但在 C# 中却没有,方法是像上面那样创建一个客户端。我将如何实现这一目标?
如果上述方法在任何方面都没有意义,请向我推荐正确的方法。
【问题讨论】:
-
我对你写这个问题的方式有点困惑,不太清楚你在这里问什么。您是在问如何向所有客户广播消息吗?因为你已经这样做了。或者您是在问如何在客户端接收它们?或者您可能不知道如何从客户端建立连接?无论如何,请尽量在提问时尽可能明确,也许您可以告诉我们您到目前为止所做的尝试。
-
@Dennis1679 很抱歉造成混淆,请查看编辑部分以获得更清晰的信息。希望现在很清楚
标签: signalr signalr-hub signalr.client