【问题标题】:SignalR sticky sessions with F5 and CitrixSignalR 与 F5 和 Citrix 的粘性会话
【发布时间】:2018-05-19 09:13:02
【问题描述】:

我们有一个需要与 winform 应用程序交互的 Web 应用程序(角度)。我们通过 SignalR 做到这一点。 浏览器和 winform 部署在 citrix 服务器上。 有一个 IIS 服务器的 webfarm,在这些服务器上我们有 webapi 服务和 signalR 集线器。

所有网络活动都通过 F5 负载均衡器进行。

我们面临的问题是如何确保 web 应用程序在 chrome 上运行,并且 windows 窗体应用程序都连接到同一个 SignalR Hub 服务器。

我们不能使用基于源 IP 的粘性会话,因为所有用户都在使用 citrix 基础架构,因此所有用户都具有相同的源 IP。 使用 cookie - 我不确定 cookie 是否在浏览器和 winform 应用程序之间共享。无论如何,websocket 场景中的 cookie 不起作用(对吗?)

是唯一使用背板的解决方案吗? (目前不使用 dotnet core)

【问题讨论】:

    标签: signalr f5 signalr-backplane sticky-session


    【解决方案1】:

    覆盖或更改源信号器

    Private Task ProcessNegotiationRequest-->

       string connectionId = !string.IsNullOrEmpty(context.Request.QueryString["ConnId"]) ? context.Request.QueryString["ConnId"]: connectionId = Guid.NewGuid().ToString("d");
    

    并在查询字符串中发送 conId

    【讨论】:

    • 我发现我可以在与信号器集线器的连接中使用 QueryString 选项,并且该查询字符串正在发送到服务器的所有请求中。我正在考虑使用查询字符串中的值在 F5 中创建 iRule。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-16
    • 2019-06-21
    • 2011-09-16
    • 2019-09-24
    • 2016-07-25
    • 1970-01-01
    相关资源
    最近更新 更多