【发布时间】:2015-10-01 23:59:10
【问题描述】:
ExportClient 类有OnTickRecieved 事件,这有助于我接收一些数据(来自市场的投标价格)。我想要的只是在浏览器的图表上实时接收这些数据。当我按下 UI 端的Go 按钮时,它会调用控制器中的Go() 方法,然后什么也没有发生。这是合乎逻辑的 - 因为在服务器上请求后,控制器被破坏。
我的问题是:如何强制服务器不断向我发送事件数据?
控制器代码:
public class ChartsController : Controller
{
[HttpGet]
public void Go()
{
var exportClient = new ExportClient();
exportClient.TickRecieved += exportClient_TickRecieved;
}
private void exportClient_TickRecieved(object sender, TickRecievedEventArgs args)
{
ImpulserHub.SendBidPrice(args.Bid);
}
}
集线器代码:
[HubName("impulserHub")]
public class ImpulserHub : Hub
{
public static void SendBidPrice(double bid)
{
var hubContext = GlobalHost.ConnectionManager.GetHubContext<ImpulserHub>();
hubContext.Clients.All.sendBidPrice(bid);
}
}
我已经测试过 SignalR,这段代码运行良好:
[HttpGet]
public void Go()
{
ImpulserHub.SendBidPrice(3.3333333); // I have received this number on UI
}
【问题讨论】:
标签: c# .net asp.net-mvc event-handling signalr