微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c# – Pool回收的ASP.NET Websocket行为

我目前正在评估使用asp.net websockets来连接数千个客户端,这些客户端几乎全天候都会与应用程序保持连接,除非服务器脱机进行修补等.一般来说,系统的期望是websockets不应该不必要地断开连接,客户端基本上保持连接并每隔几分钟ping一次服务器.

当我在研究新架构的asp.net websocket可行性时,我遇到了另一个stackoverflow帖子:IIS App Pool cannot recycle when there is an open ASP.NET 4.5 Websocket,这似乎表明如果有一个活动的websocket连接,IIS不会回收池.这是设计还是其他人遇到异常?如果IIS确实在websocket连接处于活动状态时回收池,那么预期的行为是什么? Http.sys是否保持连接,回收池并恢复事务,就像没有发生任何事情一样(从客户的角度来看)?我应该为websockets创建一个单独的应用程序池并禁用它上面的回收吗?

解决方法

根据我的经验,旧工作进程上的WebSockets没有转换到新的工作进程.我观察到旧的WebSockets被置于非Open状态,由你的代码检查并停止维护这些线程 – 我的应用程序通过WebSockets为客户端创建心跳,如果心跳失败,我需要尽快关闭(已经关闭)WebSocket上下文,以便旧的工作进程可以完全卸载并死掉.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐