gpt4 book ai didi

websocket - 确定是否需要信号器背板

转载 作者:行者123 更新时间:2023-12-02 23:50:51 24 4
gpt4 key购买 nike

我无法确定我的场景是否需要使用 Signalr 背板。不幸的是,我无法获得我需要自己测试的测试环境,所以我来这里;)

在我的场景中,我们使用信号器从服务器应用程序(即 Windows 服务)与特定客户端进行通信(使用连接 ID)。当客户端访问某个页面时,我们会 Hook 信号器 OnConnected 事件并注册用户以在我们的数据存储中接收通知。现在我们存储连接 ID、它们来自的服务器的 IP 以及其他一些应用程序特定信息。

当服务器进程运行并确定需要向客户端发送消息时,它会使用客户端连接/订阅时捕获的 IP 构造一个代理(代理已缓存,顺便说一句)并发送消息。

现在工作正常。但是,我担心这在负载平衡场景中不起作用。我在想如果使用网络套接字没有问题,但假设它会退回到长轮询。难道这不会发生吗:

  • 用户 A 访问该页面并通过来自 IP 1.1.1.1 的网络服务器 X 的信号器进行注册
  • 另一个长轮询请求来自用户 A,但它通过 IP 2.2.2.2 的 Web 服务器 Y
  • 服务器进程运行并确定需要发送消息,但它使用用户连接的服务器的 IP - 1.1.1.1
  • 消息无法发送到客户端

我的这种想法离题很远吗?我试图避免使用背板,因为每个横向扩展选项都会给我们带来问题。

最佳答案

简短的答案是肯定的,在负载平衡环境中您始终需要背板

较长的版本,您有 2 台服务器服务器 A 和 B 负载平衡。用户连接到 A ,用户可以自愿断开连接,或者通过网络超时,或者通过 signalR 刷新(有几个 bug 与此有关,这是一定的回归,但仍然可以在未来版本中重新合并,与使用哪种通信无关),但基本上用户有时会发现自己“突然”连接到服务器 B。现在服务器 A 将无法向用户发送数据。

关于websocket - 确定是否需要信号器背板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34727620/

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