我刚刚开始学习signalR,而我正试图实现搜索功能。
我如何定期更新用户的搜索结果。我最初的想法是通过IRegisteredObject运行一个定时作业来触发客户端检查,搜索参数如下:
public class BackgroundTimer : IRegisteredObject
{
private Timer taskTimer;
private IHubContext hub;
public BackgroundTimer()
{
HostingEnvironment.RegisterObject(this);
hub = GlobalHost.ConnectionManager.GetHubContext<SearchHub>();
taskTimer = new Timer(OnTimerElapsed, null, TimeSpan.FromSeconds(1), TimeSpan.FromSeconds(5));
}
private void OnTimerElapsed(object sender)
{
hub.Clients.All.checkForUpdates();
}
}
public class SearchHub : Hub
{
public void Search(string searchText)
{
string jsonResult = string.Empty;
//TODO save result to jsonResult
Clients.Caller.broadcastMessage(jsonResult);
}
}
然而,我无能为力,但我认为有更有效的方法来实现这一目标。任何建议请
答案 0 :(得分:0)
使用此代码,您只需执行客户端可以执行的操作,每秒轮询服务器。在所有更改搜索结果并对其执行操作的操作上发布消息。或者使用SqlDependency。