0

我的任务是创建一个网页(想想 twitter),当新消息添加到数据库时会更新。当一条消息从数据库中删除时,它也必须从客户端中删除。多个客户端可能同时访问相同的消息。可能会发生其他操作,例如在服务器上发出停止命令。一旦发生这种情况,服务器上的所有消息都将停止显示。

我正在寻找的是解决这个问题的架构。

我使用的技术是 .Net 4.5、ASP.Net MVC 和 KnockoutJs。可以使用 Nodejs,但我需要知道使用 nodejs 比使用 SignalR 的好处。

我目前的实现是使用一个 javascript 计时器,它每 30 秒轮询一次服务器以获取新消息。它有效,但投票感觉很脏。

4

2 回答 2

1

无法对 ASP.NET 发表评论 - 但已为此使用了 Node.js 和 Knockout。我使用了 WebSockets(通过 socket.io 库)和服务器发送事件 (SSE) 来将更新推送到客户端模型。

听起来 SSE 很适合这种情况。关键是您的数据库技术应该支持向节点中间件发送更改事件,以便您可以将其发送到浏览器。

于 2012-12-21T23:01:32.667 回答
0

经过更多研究,轮询方法是所涉及技术的最佳解决方案。

问题的症结在于没有新消息的通知,这会促使系统发生变化。目前,当它被提交到数据库时会收到一条新消息。SQL Server 没有通知机制(这不是 100% 正确的,但它不是我希望承担的依赖项)。从长远来看,最佳系统是使用 SignalR 或 nodejs 实现发布/订阅 motel,将实时消息传递给客户端。为此,需要对应用程序进行完整的重新架构。

于 2012-12-24T17:38:43.580 回答