我正在尝试使用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)”
在我的中心,我有连接客户端的方法,可以更新网页,但如何订阅或通知我的应用程序这些事件?
例如,这是集线器上的一种方法:
public void Send(字符串消息,字符串名称) {
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)
);