小编典典

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

node.js

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

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

而不是遵循CouchDB示例(检测基于数据库的事件,我认为这只会使事情复杂化,因为我们对客户端事件感兴趣),而是在考虑发生事件(例如用户登录)时发送一条消息带有一些事件详细信息(RESTful请求?)的消息。然后,该消息将被处理并广播到所有连接的客户端。适当的客户端显示通知。

拟议的生态系统:

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

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

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

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

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

最好的方法是什么?

如果我没有正确理解术语生态系统配置,请进行说明。

谢谢。


阅读 251

收藏
2020-07-07

共1个答案

小编典典

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

关于websocket,无论使用ASP.NET还是node.js(socket.io),都只能对低延迟通知使用HTTP长轮询,因为HTTP.SYS /
IIS直到Windows 8才支持websocket。当前支持websocket(即使在Windows 8上也是如此),但是稍后可以添加这种支持。

我最近做了一些有关从node.js访问MSSQL的研究。那里有一些OSS项目,其中一些使用特定于平台的本机扩展,一些尝试仅在JavaScript中实现TDS协议。我不知道有什么可以使您访问SQL通知功能。但是,MSSQL团队本身正在为node.js购买一流的MSSQL驱动程序,因此需要密切注意以继续前进(https://github.com/tjanczuk/iisnode/issues/139)。

如果您打算使用SQL通知来支持低延迟通知,我强烈建议您从性能基准开始,该基准在SQL Server级别模拟所需的通信量。SQL
Notifications主要是作为一种机制来帮助维持内存缓存中与数据库内容一致的机制,因此它可能满足或可能不满足通知方案的要求。这些测量值至少可以帮助您从更好的设计入手。

2020-07-07