我正在开发一个需要在一定时间间隔内自动更新客户端的项目但是发送到客户端的更新基于客户端选择的参数。
我正在为之工作的客户说过客户端不应该向服务器发起请求,但服务器应该将数据发送给客户端。
我按照这里的文章让SignalR每隔一段时间向客户端发送数据。 Build a Real-time SignalR Dashboard with AngularJS
因此,对于示例,我有一个新闻窗口小部件,用户可以输入字符串并根据该字符串获取新闻,然后服务器应自动将更新的新闻推送到客户端。
这是小部件的样子
因此,当用户输入C
时,服务器应将与C
相关的新闻推送给该用户。
这就是我WidgetEngine
的样子,负责将更新发送给客户:
正如您所看到的那样,方法_dalProvider.GetNewsHeadlines("S")
我对符号进行了硬编码。
我考虑过保存Session
中的搜索符号但是WebSockets
是NO
public async Task OnPerformanceMonitor()
{
var widgetList = new List<WidgetModel>
{
new NewsWidgetModel { WidgetName = "News", },
};
while (true)
{
await Task.Delay(_pollIntervalMillis);
IList<WidgetModel> widgetModels = new List<WidgetModel>();
foreach (var widgetItem in widgetList)
{
try
{
switch (widgetItem.WidgetName)
{
case "News":
widgetModels.Add(new NewsWidgetModel()
{
WidgetName = "News",
News = _dalProvider.GetNewsHeadlines("S")
});
break;
}
catch (InvalidOperationException ex)
{
}
}
// At the moment I am broadcasting to all the clients, will send to connected user later.
_hubs.Clients.All.broadcastPerformance(widgetModels);
_hubs.Clients.All.serverTime(DateTime.UtcNow.ToString());
}
}
在某个地方我可以在服务器端保存这个,然后我可以查询数据库吗?