首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Server实时推送通知到Node.JS

Server实时推送通知到Node.JS
EN

Stack Overflow用户
提问于 2016-02-12 21:37:40
回答 3查看 4.9K关注 0票数 15

我正在构建一个web应用程序,简而言之,它在Server中接收结构非常糟糕的数据,并通过Node.JS将其移植到MongoDB。我需要这样做的原因是,我需要访问一个编写得相当糟糕的应用程序中的数据,这个应用程序是组织的核心,我没有能力在上更改输入初始数据的代码。一旦翻译完毕,我就可以让我的应用程序做生意想要做的事情。

现在,我的应用程序是每30分钟轮询Server一次更改,然后通过Node.JS更新我的Node.JS,而且由于数据量大得多,所以更频繁地轮询是不可取的。

我需要做的是让来自Server的实时通知以某种方式推送到我的Node.JS应用程序中,无论是主动的还是被动的,没有Node.js的末端,以便它可以更新我的Mongo数据库。

我用来获取数据的节点库是:https://github.com/patriksimek/node-mssql

我有几个可能的想法:

  • 让Server向我的NodeJS服务端点发送某种通知
  • 让NodeJS运行一个流查询,每次更改时,该查询将在我的终端上运行
  • 在C#中编写一个应用程序,监视这些更改并将它们推送到我的NodeJS HTTP端点。

有几个人似乎在谈论这一点,但大多数人似乎谈论的是数据源起始点上的更改(我无法更改),而不是SQL Server本身。

EN

回答 3

Stack Overflow用户

发布于 2019-01-22 13:58:48

我有类似的情况,在研究之后,我将使用的解决方案是编写一个.Net核心窗口服务,它只会监听Server的查询通知。当通知到达时,它将命中nodejs REST端点,将更改通知它,并允许nodejs应用程序根据需要查询和处理数据。

我搜索并搜索了一种从nodejs执行查询通知的方法,但似乎没有这样的方法。您需要一个.Net应用程序。

但是,与编写.Net核心窗口服务(如果需要的话编写ASP.Net应用程序)不同,另一种可能是使用EdgeJ与nodejs应用程序(在同一进程中)实际运行.Net程序集。

我决定不走那条路,而是去做windows服务。但它也应该是可行的。

(我也意识到这个问题已经2年了,所以你可能已经完成了这个项目,但我会把这些答案留给后人)

票数 10
EN

Stack Overflow用户

发布于 2018-01-10 14:35:31

我得先说我没有实时解决方案。如果有一个实时的解决方案,我不知道。我只想谈谈如何减少民意测验的工作量。

我假设您可以控制Server本身。您可以在Server中设置一些内容,以跟踪更改,并获得轮询,以便只查看Node尚未拉动的更改。

您对更新/插入过程有控制权吗?(如果有),很简单,将更改跟踪代码与插入/更新代码放在一起。不过,我假设您没有,在这种情况下,我建议您查看一下triggers。这些基本上是附加到表的事件侦听器,它们允许您在表的插入/更新之前、期间或之后执行SQL,并允许您使用deletedinserted表访问正在更改/插入的数据。

*由于种种原因,Server社区不喜欢触发器,其中一些原因被讨论过( 关于这篇SQLServerCentral文章 )。问题的关键是:它们很难调试,当它们成为写操作的一部分时会降低性能,并且要小心不要创建循环触发器(table1是更新触发trig1、更新table1、触发trig1等的触发器)。因此,如果您使用表上的触发器进行更改跟踪,则创建一个单独的表来跟踪这些更改,只允许触发器更新/插入表

现在,您可以设置一个更改跟踪表,触发器填充了所做的任何更改,以及这些更改发生的时间,甚至还可以设置一个bit字段来说明Node是否已经删除了这些更改。现在你要做的就是让Node看看那张桌子,只需要调整一下,它还没有拉进去。这张表可能很快就会变大,因此投票速度很慢,所以我建议在标志或字段上添加一个index,以说明更改的日期。现在,由于投票很快,您应该能够减少间隔。

这不是一个理想的解决方案,而且可能需要做很多工作,所以最好等一等,看看是否有人想出了更好的解决方案。

票数 2
EN

Stack Overflow用户

发布于 2018-12-23 04:04:38

您可以解决触发器和CLR存储过程的问题。更新表之后,可以执行CLR存储过程,例如向Nodejs发送通知。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35372594

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档