asp.net-core – 如何在部署插槽交换后优雅地迁移打开的Websocke
在我的Web应用程序中,当用户登录到应用程序时,他们的浏览器会打开一个Websocket到服务器,以便可以将更新推送到浏览器.
它是在Azure应用服务中运行的ASP.NET核心Web应用程序(自托管).我想使用Azure的deployment slot swapping功能将代码更新推送到生产,零停机部署. 在我完成的有限测试中,看起来在插槽交换后,Websocket连接保持打开到浏览器所连接的原始插槽. (因此,如果浏览器的Websocket连接到插槽A,并且我们交换插槽A和B以便新连接进入插槽B,则Websocket仍将对插槽A上运行的应用程序开放.) 在某些时候,旧插槽将脱机,这将强行关闭任何打开的Websockets.我希望尽可能优雅地重新打开Websocket到新插槽,并在插槽交换后尽快重新打开,这样如果我更新与Websocket相关的代码,所有客户端将尽快运行新代码. 这可能如何工作的草图: >进行插槽交换 有没有更好的方法呢? 如何在旧插槽上运行的代码知道它何时被交换? 是否可以优雅地处理这个问题?或者总会有一堆竞争条件? 解决方法
WebSockets确实保持连接,因为ARR只能将新请求定向到“新”应用程序.例如,如果您在交换过程中下载大文件,则会看到相同的行为.
我处理这个的方法是让我的部署系统(Octopus)进行交换,然后向“旧”应用程序发出请求,通知所有连接的WebSocket客户端他们需要断开连接并重新连接.客户端将立即断开连接,选择随机延迟(以防止数千次重新连接),然后在延迟后重新连接. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net – 如何将Session从一个应用程序传递到另一个应用程
- asp.net-mvc – MVC反伪造令牌如何在Web服务器重启之间存活
- asp.net – 如何使用master从asp:content页面访问母版页上
- asp.net-mvc-3 – 从Minifying中跳过单个文件?
- asp.net – 使用母版页在Aspx页面中引用CSS工作表
- asp.net-mvc – 如何使用编辑器内部的foreach
- asp.net-mvc – ASP.Net MVC尝试抓住最佳实践
- asp.net – 应用程序池在iisreset之后无法启动
- asp.net – 为什么有2个web.config文件
- ASP.NET CORE系列【七】分析NetCore启动原理
- asp.net-core – .NET Core 1.0 – 如何使用xUni
- asp.net-mvc-3 – MV3复选框的重复查询字符串值(
- asp.net-mvc-3 – SignalR依赖注入问题
- asp.net-core – 如何自动增加MVC 6版本号?
- asp.net – 在代码而不是数据库中存储salt
- asp.net-mvc – mvc编辑器模板结果被缓存
- asp.net-mvc – 防止用户在asp.net模型验证中输入
- asp.net-mvc – 如何在asp.net mvc4应用程序中显
- asp.net-mvc-4 – mvc4中的成功警报弹出窗口,不使
- asp.net-mvc-3 – 如何在Asp.Net MVC中显示Displ