15

对于通知项目,希望将事件通知推送出去。这些是登录、个人资料更改等内容,并将显示给适当的客户。我想讨论一些关于将其组合在一起的想法,并就最佳方法获得一些建议。

我注意到这里可以使用 _changes 流检测对 CouchDB 所做的更改,由 Node 接收,然后启动一个进程。我想实现这样的东西(我正在使用 SQL Server,但这个级别的入口点可能不是最好的解决方案)。

我没有遵循 CouchDB 示例(检测基于数据库的事件,我认为这只会使事情复杂化,因为我们对客户端事件感兴趣),我认为当事件发生时,例如用户登录,然后发送消息带有一些事件详细信息(RESTful 请求?)的节点服务器。然后处理此消息并将其广播给所有连接的客户端;适当的客户端显示通知。

提议的生态系统:

  • .Net 4.0
  • IIS
  • IIS节点
  • 套接字.IO
  • 节点.JS
  • SQL Server 2008

这将建立在使用 .Net 框架(IIS 等)的现有项目之上。许多客户端的浏览器不支持 Web 套接字,因此使用 Socket.IO 是一个不错的选择(后备支持)。但是,据我所见,Socket.IO 仍然只支持通过 IISNode 进行长轮询(这不是真正的问题)。

一种选择是向所有客户端公开 Socket.IO/Node 端点,以便可以通过 JS 将基于客户端的通知发送到广播消息的 Node 服务器。(遵循基本的聊天服务器/客户端/服务器示例)。

或者,可以使用 IIS 端点,但只能支持长轮询(通过 Socket.IO)。这将提供一些额外的 .Net 后端处理,但可能会使架构过于复杂。

是否有可用于 Node 的基于 SQL Server 的事件通知?

最好的方法是什么?

如果我没有正确理解术语生态系统配置,请澄清。

谢谢。

4

2 回答 2

15

我建议您在考虑将 iisnode/node.js 添加到现有 ASP.NET 应用程序的技术组合中之前先查看SignalR 。

关于 websockets,无论你使用 ASP.NET 还是 node.js (socket.io),你只能使用 HTTP 长轮询来获得低延迟通知,因为在 Windows 8 之前,HTTP.SYS/IIS 不支持 websockets。iisnode 不支持目前支持 websockets(甚至在 Windows 8 上),但以后可能会添加这样的支持。

我最近做了一些关于从 node.js 访问 MSSQL 的研究。有一些 OSS 项目,其中一些使用本地的、特定于平台的扩展,一些尝试纯粹在 JavaScript 中实现 TDS 协议。我不知道任何可以让您访问 SQL 通知功能的东西。但是,MSSQL 团队本身正在为 node.js 投资一流的 MSSQL 驱动程序,因此这是需要密切关注的事情 ( https://github.com/tjanczuk/iisnode/issues/139 )。

如果您计划使用 SQL 通知来支持低延迟通知,我强烈建议您从在 SQL 服务器级别模拟所需流量级别的性能基准开始。SQL 通知主要是作为一种机制来帮助维护内存缓存与数据库内容的一致性,因此它可能满足也可能不满足通知场景的要求。这些测量至少可以帮助您从更好的设计开始。

于 2012-03-05T17:56:26.237 回答
2

我强烈推荐使用Pusher。这就是我们使用的,因为它是一个托管解决方案,所以很容易实现。因此,插入并使其工作非常容易。除非您要通过它大规模推送大量疯狂的消息,否则它不会花费太多。

于 2012-08-30T02:50:31.330 回答