gpt4 book ai didi

database - Microsoft SQL 数据库的 WebSocket 监听器

转载 作者:搜寻专家 更新时间:2023-10-31 22:48:50 24 4
gpt4 key购买 nike

我目前正在从事一个项目,该项目必须使用 WebSockets 作为向我的客户端传输数据的方式。基础设施看起来像这样。
客户端 --> Web 服务器 --> Microsoft SQL 数据库

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

我想知道是否有办法在 MSSQL 数据库更新时自动通知 socket 到 web 服务器,以便它可以处理该信息。

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

我也意识到在客户端和数据库之间建立套接字至少从安全角度来说并不明智,至于现在这不是问题,而且 SQL 不是实时应用程序的方式,但我是现在绑定(bind)它:)

编辑 1:

感谢@tomfanning,我现在知道了这个问题的解决方案,但严重怀疑性能的提高。让我为您描绘一下情况。如果我要在 MSSQL 数据库上使用触发器,我想会发生这种情况。

情况一

  1. 数据库更新
  2. 扣动扳机
  3. CLR 脚本与 Web 服务器建立连接。要么通过一个套接字,它必须为每个触发器或通过它打开和关闭涉及打开和关闭 header 的 HTTP(S) 请求(其中是无用的开销)
  4. Web 服务器接收触发器并将数据发送到客户。
  5. 客户端更新。

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

情况二:

  1. 在客户端中为 AJAX 请求设置了 1000 毫秒的超时
  2. 客户端超时并发出 AJAX 请求
  3. 数据库执行一些查询并返回结果
  4. 客户端更新。

在情况 1 中,您需要一个请求和一个套接字发送/接收,而在情况 2 中,您只需要一个请求。如果我将 AJAX 请求的超时设置为 10MS,它会不会在用户看来就像是一个像 websocket 这样的实时应用程序?或者情况 1 是否仍然更有效,我只是在夸大其词?

提前致谢!

最佳答案

可能的解决方案可能是 T-SQL triggers on INSERT or UPDATECLR procedure它向您的主应用程序发送一些通知,然后通过 websockets 将数据泵出到您的客户端。将避免需要轮询数据库。

根据您的评论 - 不确定 AJAX 在这种情况下如何具体帮助您 - 因为作为一种由客户端(浏览器)驱动的技术,您的解决方案将再次采用轮询,我知道您希望避免这种情况。 WebSockets 听起来很适合这里,因为它使您能够在不需要轮询的情况下从服务器真正“推送”到客户端。

显然,我在这里谈论的是非常笼统和理论化的术语。

关于database - Microsoft SQL 数据库的 WebSocket 监听器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8566910/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com