如何实现Socket.IO与ASP.Net,IISNode,Node.JS和SQL Server的基于事件的推送通知?

对于通知项目,想推送事件通知。 这些都是login,更改个人资料等,并显示给适当的客户。 我想讨论一下把它放在一起的一些想法,并就最好的方法得到一些build议。

我在这里注意到,对CouchDB所做的更改可以通过由Node拾取的_changesstream来检测,并且一个进程将启动。 我想实现这样的事情(我正在使用SQL Server,但是在这个级别的入口可能不是最好的解决scheme)。

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

build议的生态系统:

  • .Net 4.0
  • IIS
  • IISNode
  • Socket.IO
  • Node.js的
  • SQL Server 2008

这将build立在使用.Net框架(IIS等)的现有项目之上。 许多客户的浏览器不支持networking套接字,所以使用Socket.IO是一个不错的select(后备支持)。 但是,从我所看到的 ,Socket.IO只支持通过IISNode长轮询(这不是一个真正的问题)。

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

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

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

什么是最好的方法?

如果我没有得到术语生态系统configuration权,请澄清。

谢谢。

我build议你在考虑将iisnode / node.js添加到已存在的ASP.NET应用程序的技术组合之前先检查SignalR 。

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

我最近做了一些关于node.js的MSSQL访问的研究。 有几个OSS项目,其中一些使用原生的,特定于平台的扩展,一些尝试纯粹用JavaScript实现TDS协议。 我不知道有什么可以让你访问SQL通知function。 然而,MSSQL团队本身正在为node.js投资一stream的MSSQL驱动程序,所以这是一个需要注意的事情( https://github.com/tjanczuk/iisnode/issues/139 )。

如果您计划使用SQL通知来支持低延迟通知,我强烈build议从性能基准testing开始,在SQL服务器级别上模拟所需的通信量。 SQL通知主要是指帮助维护内存caching与数据库内容保持一致的机制,因此它可能会或可能不会满足您的通知scheme的要求。 这些测量至less可以帮助您从更好的devise开始。

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

Interesting Posts