我正在试验 Signalr Hubs 并创建了一个小应用程序来将消息推送到外部集线器。我创建了一个代理并连接到集线器,然后我可以调用任何我想要的方法。
InitializeComponent();
connection = new HubConnection("http://externalsite.net");
myHub = connection.CreateProxy("WebHub");
if (connection.State.ToString() != "Connected")
{
connection.ConnectionId = "adminConsole";
Console.WriteLine("Attempting to connect...");
connection.Start().ContinueWith(task =>
{
Console.WriteLine("Attempting to Connect");
if (task.IsFaulted)
{
Console.WriteLine("error opening the connection:{0}"
task.Exception.GetBaseException());
}
else
{
Console.WriteLine("Client Connected");
}
}).Wait();
}
然后我可以使用“myHub.Invoke(method)”
在我的集线器上,我有连接客户端的方法,并且可以更新网页,但我该如何订阅或通知我的应用程序这些事件?
例如,这是集线器上的一种方法:
公共无效发送(字符串消息,字符串名称){
Clients.All.Broadcast(message, name);
}
所有客户都收到此消息,我的应用程序如何也收到此消息?这可能吗?,我可以让我的应用程序轮询更改,但这远非理想。
更新:我尝试在下面附加 On<> 方法也没有运气。
myHub.On<VMessage>("Send", message =>
textBox1.Text += string.Format("Message update for
{0} Message : {1}\n", message.engineName, message.Vmsg)
);