如何使用signalR更新搜索结果



我刚刚开始学习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);
    }
}

然而,我忍不住认为有更有效的方法来实现这一点。任何建议请

使用这些代码,您只是在做客户端可以做的事情,即每秒轮询服务器。发布一条关于更改搜索结果的所有操作的消息,然后执行该操作。或者使用SqlDependency。

最新更新