我的任务是创建一个在新消息添加到数据库时更新的网页(想想推特)。从数据库中删除邮件时,也必须从客户端删除它。多个客户端可能同时访问相同的消息。可能会发生其他操作,例如在服务器上发出停止命令。一旦发生这种情况,服务器上的所有消息都将停止显示。
我正在寻找的是解决此问题的架构。
我使用的技术是.Net 4.5,ASP.Net MVC和KnockoutJs。可以使用Nodejs,但我需要知道使用nodejs而不是使用SignalR的好处。
我目前的实现是使用javascript计时器,它每隔30秒轮询一次服务器以获取新邮件。它有效,但轮询感觉很脏。
答案 0 :(得分:1)
无法对ASP.NET发表评论 - 但已将Node.js与Knockout一起使用。我已经使用了两个WebSockets(通过socket.io库)和服务器发送事件(SSE)来推送更新到客户端模型。
听起来SSE在这种情况下非常适合。关键是您的数据库技术应该支持向您的节点中间件发送更改事件,以便您可以将其发送到浏览器。
答案 1 :(得分:0)
经过更多研究,轮询方法是所涉及技术的最佳解决方案。
问题的症结在于没有新消息的通知,这会促使系统发生变化。目前,在将其提交到数据库时会收到新消息。 SQL Server没有通知机制(这不是百分之百,但它不是我想要的依赖)。在长时间运行中,最佳系统将使用SignalR或nodejs实现发布者/订阅汽车旅馆,这将向客户端传递实时消息。为此,需要对应用程序进行完整的重新架构。