我正在开发有关新闻的mvc项目和Windows服务项目。这是两个不同的项目,但是它们连接到同一数据库。 Windows服务项目正在后台运行,每隔10分钟就会从不同的Web服务更新我的数据库。
我的mvc项目有登录页面和新闻页面,例如facebook。我的数据库有用户表,新闻表和新闻类别表。每个用户都应登录并选择一些新闻类别,然后查看有关该类别的新闻,例如Facebook页面。
我想在我的项目中添加一个实时通知系统。当Windows服务项目将一些新闻添加到我的数据库中时,我希望向在线用户实时显示这些新闻,因为我不想让他们重复刷新页面。
我做了一些研究,找到了SignalR。当我的数据库遇到新问题时,我想从Windows服务项目中调用mvc项目中的Hub并将其显示给选择类别的用户。
这有什么问题吗?
真正的问题是,我可以通过onconnected()方法看到集线器中的用户,而signalr给他们提供connectionId(例如“ 34de0f5d-f153-45cd-9e48-77fgr4t7gh4”),但是我怎么知道我的用户是这个? 如何在用户表和信号器用户之间建立联系?
答案 0 :(得分:3)
当Signalr启动连接时,它会创建connectionid,因此您可以将用户的connectionid保存在数据库中,并为用户online管理一个标志(isOnline),因此,如果user online标志为true,而user offline标志为false。现在,当您想向在线用户发送通知时,只需检查哪个用户在线并从数据库获取其连接ID并发送通知即可。