如何使用SignalR和.NET Core 2检测新的后端版本

时间:2019-04-25 09:13:55

标签: .net asp.net-core signalr asp.net-core-signalr

编辑:等待了一周后,我放弃并实现了setInterval,它每分钟发布一次内部事件,这使SignalR调用服务器以获取当前版本。

我们想向用户介绍一个烤面包机,告诉他们他们需要刷新站点才能获得SPA的最新版本。

在部署新的后端版本时,前端SPA不会意识到有较新的更好版本可用。由于是SPA,因此用户通常不会在很多天内重新加载页面。

我们尝试监听signalR-hub中的连接和断开事件。

但是,由于正常部署不会回收应用程序池,因此SignalR连接保持打开状态,不会触发SignalRs事件。

当新的后端启动时,它没有客户端列表吗?所以我不能在启动时通知客户吗? 还没有尝试过,因为我认为这不可行。是吗?

朋友:带有signalR的Vue 后端:ASP .NET Core 2.2 服务器:IIS和Octopus进行部署。

在我的中心:

public override async Task OnConnectedAsync()
{
   var assemblyVersion = GetType().Assembly.GetName().Version.ToString();
   await Clients.All.SendAsync("currentVersion", assemblyVersion);

   await base.OnConnectedAsync();
}

,并在前端使用$ signalR.HubConnectionBuilder:

this.connection.on('currentVersion', version => this.checkVersion(version))

这在运行dotnet监视时就像在本地运行超级按钮一样,但不适用于非回收iis部署。

还有建议吗? 是否根据所有请求发送版本?似乎矫kill过正,代码繁重。

我们不想让轮询器每隔N分钟问一次新版本。 很想使用现有的SignalR连接!

0 个答案:

没有答案