使用 AspNet SignalR 连接 Redis
Wiring up Redis with AspNet SignalR
我只是想验证我的设置。这似乎有效,但我想和你们一起验证我的设置。
我在我的网站上托管了 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();
}
}
现在,我在我的其他 Web 服务中这样使用它:
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和SQLServer,我们可以像您一样使用Redis在部署在多个实例上的SignalR应用程序中分发消息,您的配置是行。本文:SignalR Scaleout with Redis是详细教程,大家可以参考一下。
Is that means SignalR connection timeout is 10 seconds (because KeepAlive is set to 10 seconds)?
SignalR 使用传输 APIs 之一:WebSockets、服务器发送的事件、永久帧或长轮询来创建传输连接。对于长轮询以外的所有传输,SignalR 客户端使用一个称为 keepalive 的函数来检查传输 API 无法检测到的连接丢失,您的配置 GlobalHost.Configuration.KeepAlive = TimeSpan.FromSeconds(10)
表示将发送一个 keepalive 数据包每 10 秒。
我只是想验证我的设置。这似乎有效,但我想和你们一起验证我的设置。
我在我的网站上托管了 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();
}
}
现在,我在我的其他 Web 服务中这样使用它:
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和SQLServer,我们可以像您一样使用Redis在部署在多个实例上的SignalR应用程序中分发消息,您的配置是行。本文:SignalR Scaleout with Redis是详细教程,大家可以参考一下。
Is that means SignalR connection timeout is 10 seconds (because KeepAlive is set to 10 seconds)?
SignalR 使用传输 APIs 之一:WebSockets、服务器发送的事件、永久帧或长轮询来创建传输连接。对于长轮询以外的所有传输,SignalR 客户端使用一个称为 keepalive 的函数来检查传输 API 无法检测到的连接丢失,您的配置 GlobalHost.Configuration.KeepAlive = TimeSpan.FromSeconds(10)
表示将发送一个 keepalive 数据包每 10 秒。