编辑:等待了一周后,我放弃并实现了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连接!