我只想验证我的设置。它似乎有效,但我想与你们一起验证我的设置。
我在我的网站上托管了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扩展我的网站。
答案 0 :(得分:2)
SignalR目前提供三个背板:Azure Service Bus,Redis和SQL Server,我们可以使用Redis在部署在多个实例上的SignalR应用程序上分发消息,就像您一样,并且您的配置正常。本文:SignalR Scaleout with Redis是一个详细的教程,您可以参考它。
这是否意味着SignalR连接超时为10秒(因为KeepAlive设置为10秒)?
SignalR使用传输API之一:WebSockets,服务器发送事件,永久帧或长轮询来创建传输连接。对于除长轮询之外的所有传输,SignalR客户端使用称为keepalive的函数来检查传输API无法检测的连接丢失,您的配置GlobalHost.Configuration.KeepAlive = TimeSpan.FromSeconds(10)
表示将每10秒发送一次keepalive数据包。