Microsoft SQL数据库的WebSocket侦听器

我目前正在使用WebSocket作为向客户传输数据的一个项目。 基础设施看起来像这样。
客户端 – > Web服务器 – > Microsoft SQL数据库

我认为最理想的情况是这样的:客户端打开服务器的套接字。 服务器打开一个套接字到Microsoft SQL数据库。 无论何时更新数据库(某些数据已被插入),数据库将数据写入套接字。 服务器将数据写回客户端。 这可能有点乏味,也许我可以以某种方式直接从客户端打开一个套接字到数据库?

我想知道是否有办法自动通知套接字的Web服务器,如果MSSQL数据库更新,以便它可以处理该信息。

主要的问题是, 我将如何做这项工作? 我已经看过一些使用WebSockets的项目,比如Node.JS和Socket.IO,也是Tornado。 虽然我还没有find任何线索,在哪里寻找这个特定的function。 我发现一些相当不稳定的用于NodeJS的MSSQL数据库的驱动程序,但是不明白是否有任何方法可以将数据库创build到数据库,并在数据库被泵入数据库时​​立即通过套接字发送数据。

我也意识到,在客户端和数据库之间build立一个套接字是不明智的,因为现在这不是一个问题,SQL不是实时应用程序的方式,但我必须目前 :)

编辑1:

感谢@tomfanning我现在知道这个问题的解决scheme,但严重怀疑性能的改善。 让我为你描绘一下情况。 在我使用MSSQL数据库上的触发器的情况下,我想象会发生这种情况。

情况1

  1. 数据库被更新
  2. 触发器被拉
  3. CLR脚本连接到Web服务器。 无论是通过一个套接字,它必须打开和closures每个触发器或通过HTTP(S)请求,涉及打开和closures标题(这是无用的开销)
  4. Web服务器接收触发器并将数据发送到客户端。
  5. 客户端更新。

现在想象一下相同的场景,但是随后使用AJAX

情况2:

  1. 客户端为AJAX请求设置1000ms超时
  2. 客户端超时并发出AJAX请求
  3. 数据库执行一些查询并回传结果
  4. 客户端更新。

在情况1中,你需要一个请求和一个套接字发送/接收,情况2你只需要一个请求。 如果我将AJAX请求的超时设置为10MS,那么对用户来说就好像它是一个像websocket一样的实时应用程序? 还是情况1仍然更有效率,我只是夸大?

提前致谢!

可能的解决scheme可能是INSERT或UPDATE上的T-SQL触发器, CLR过程向主应用程序发送一些通知,然后通过websockets将数据输出到客户端。 将避免需要轮询数据库。

根据你的评论 – 不知道AJAX如何在这种情况下专门为你提供帮助 – 因为作为一种由客户端(浏览器)驱动的技术,你的解决scheme将再次被轮询,我明白你要避免。 WebSockets在这里听起来很合适,因为它使您能够在不需要轮询的情况下从服务器真正“推送”到客户端。

很明显,我在这里以非常一般的和理论的方式来谈论。