我目前正在使用SignalR开发实时聊天应用。实时聊天应用程序的工作方式如下:
目前,我有两个应用程序调用SignalR服务器函数,该函数使用setInterval()从数据库中获取数据以更新客户端,但这使得使用SignalR失败了。有没有办法在服务器端使用后台任务轮询数据库,然后使用SignalR通知特定用户(接收消息的用户)?如果是这样,我该如何设置后台任务?
答案 0 :(得分:0)
看起来你想要一个自下而上的通知机制(Database-Application-Client)。正如@JAG所述,您可以使用ADO.Net工具集中的SqlDependency,这样您就可以在消息表上放置一个wach,这样一旦更改就会收到通知(例如,插入消息) 。这是一个fine example。 SqlDependency不会为您提供插入/更改的实际记录 - 它只会让您知道存在更改,因此您需要设计一个查询来获取该确切记录。收到通知后,您可以查询该记录,然后从集线器调用客户端的方法并将记录作为参数传递。