gpt4 book ai didi

c# - 使用 AspNet SignalR 连接 Redis

转载 作者:可可西里 更新时间:2023-11-01 11:12:57 33 4
gpt4 key购买 nike

我只是想验证我的设置。它似乎有效,但我想与你们一起验证我的设置。

我的网站上托管有 SignalR。在我的 Startup.cs 中我这样做:

public class Startup
{
public void Configuration(IAppBuilder app)
{
GlobalHost.Configuration.ConnectionTimeout = TimeSpan.FromSeconds(110); //may be no longer needed because I've set KeepAlive?
GlobalHost.Configuration.DisconnectTimeout = TimeSpan.FromSeconds(30);
GlobalHost.Configuration.KeepAlive = TimeSpan.FromSeconds(10);

// following setting is get from https://greenfinch.ie/2015/07/09/azure-licks-using-redis-cache-signalr/
var redisConnection = ConfigurationManager.ConnectionStrings["RedisCache"].ConnectionString;
// set up SignalR to use Redis, and specify an event key that will be used to identify the application in the cache
GlobalHost.DependencyResolver.UseRedis(new RedisScaleoutConfiguration(redisConnection, "MyEventKey"));

app.MapSignalR();
}
}

现在,我在其他网络服务中像这样使用它:

HubConnection hubConn = new HubConnection(url);
...
...
...
hubConn.CreateHubProxy("NotifyHub").On<string>("Notify", (msg) => PushToQueue(msg));
hubConn.Start();

这看起来正确吗?这是否意味着 SignalR 连接超时为 10 秒(因为 KeepAlive 设置为 10 秒)?

这是我的使用图(想象一下网站和网络服务器有大量流量,Azure 需要为网站和网络服务器启动另一台计算机)

                        url: www.blablabla.com                 url: services.anotherweb.com
-------- ----------- ---------------
| User | --> Modify Data --> | Website | --> Trigger Web Service --> | Web Service |
-------- ----------- | ---------------
| ^
| |
| --------------------
| |
------|---------------------
| |
| |
| v
url: www.blablabla.com | url: services.anotherweb.com
-------- ----------- | ---------------
| User | --> Modify Data --> | Website | --> Trigger Web Service --> | Web Service |
-------- ----------- ---------------

抱歉问了个愚蠢的问题。今天刚刚发现 redis,并想使用 SignalR 扩展我的网站。

最佳答案

SignalR 目前提供了三种底板:Azure Service Bus、Redis 和 SQL Server,我们可以使用 Redis 在部署在多个实例上的 SignalR 应用程序之间分发消息,就像您所做的那样,并且您的配置没问题。本文:SignalR Scaleout with Redis有详细教程,可以引用一下。

Is that means SignalR connection timeout is 10 seconds (because KeepAlive is set to 10 seconds)?

SignalR 使用传输 API 之一:WebSocket、服务器发送事件、永久帧或长轮询来创建传输连接。对于长轮询以外的所有传输,SignalR 客户端使用名为 keepalive 的函数来检查传输 API 无法检测到的连接丢失,您的配置 GlobalHost.Configuration.KeepAlive = TimeSpan.FromSeconds(10)表示每 10 秒发送一个保活数据包。

关于c# - 使用 AspNet SignalR 连接 Redis,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46483920/

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