net core下WebSocket请求总是断开的解决方案

举报
鹅是程序猿 发表于 2026/11/03 11:34:32 2026/11/03
【摘要】 最近在写一个基于B/S架构的聊天功能,本地测试没发现问题,但是部署到生产环境后总是断开。开始以为是后端超时问题,加大了KeepAliveInterval的时间。     //启用WebSocket            app.UseWebSockets(new WebSocketOptions            {                //心跳检测间隔            ...

最近在写一个基于B/S架构的聊天功能,本地测试没发现问题,但是部署到生产环境后总是断开。

开始以为是后端超时问题,加大了KeepAliveInterval的时间。


     //启用WebSocket
            app.UseWebSockets(new WebSocketOptions
            {
                //心跳检测间隔
                KeepAliveInterval = TimeSpan.FromSeconds(90)
          });

然后,测试后发现只要没有主动发送聊天,一段时间后该断开还是断开。

然后通过AIge各种搜索,各种踩坑后找到最终原因:ws在连接时候,在一定时间内(不同浏览器还不一样),前端和后端必须保持通讯,否则浏览器会基于安全考虑断开连接。

通俗理解就是:前端需要给后端发起请求,后端也需要定时给前端回复信息。

所以解决办法就是前端通过ws协议发送内容,后端接受到回复信息,我写的数据格式数据:

前端每隔30秒发送json数据:

{"action":"ping"}

 后端接收后回复数据

{"action":"pong"}

到此,ws协议断开的问题得到解决,希望可以帮助到大家。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。