H.264/H.265播放器EasyPlayer.js视频流媒体播放器关于websocket1006的异常断连

EasyPlayer.js无插件H5播放器属于一款高效、精炼、稳定且免费的流媒体播放器,可支持多种流媒体协议播放,无须安装任何插件,起播快、延迟低、兼容性强,使用非常便捷。

EasyPlayer.js播放器不仅支持H.264与H.265视频编码格式,也能支持WebSocket-FLV、HTTP-FLV、HLS(m3u8)、WebRTC、ws-fmp4、http-fmp4等格式的视频流,并具备直播、点播、录像、快照截图、MP4播放、多屏播放、倍数播放、全屏播放等功能特性。

1006是websocket的一个异常码,表示连接异常断开。

1006:CLOSE_ABNORMAL,用于期望收到状态码时连接非正常关闭。

WebSocket关闭状态码1006是由于服务器在接收到客户端的连接请求后,在建立连接前发生了错误导致连接失败。

可能的原因

1、在客户端和WebSocket服务器之间的全双工连接中,有时候连接上可能没有数据流。在这个时候,网络中介可能中止连接。

就是可能会在一段时间内没有数据流,导致网络中介认为连接已经断开了。

2、也有可能是播放器端进程卡住了,导致接受推流的速度变慢,导致流媒体推流端推流到播放器变慢,甚至直接没法接收到流媒体传输过来的数据,导致网络中介认为没有流数据了,为连接已经断开了,也有可能是服务器端检测到堆积量过大,从而断开了ws连接,从而导致浏览器抛出了1006错误。

3、有可能是本地的网络带宽上限要低于流媒体服务器端推流的码率,比如流媒体服务器端推流的码率是2M,而本地的网络带宽只有1M,这样就会有1M的数据堆积没法到达播放器端,导致服务器端堆积过多就会断开连接,然后播放器抛出了1006错误。

通讯层(浏览器底层)断连了,但是应用层还是连接着,这个时候浏览器就会抛出1006错误。

4、大多情况都是因为websocket连接在nginx配置的proxy_read_timeout内没有收到数据,nginx主动发起的连接断开(不是客户端主动断开,也不是服务端主动断开的)

client->proxy->ws-server如果proxy和ws-server之间通信有问题client就会收到1006错误码。

5、网络连接问题:网络中断、防火墙设置等因素可能导致WebSocket连接异常关闭。

在播放倍率流的时候,如果服务器端是高倍率推流,比如8倍,这个时候如果电脑的性能跟不上,就会导致解封装和解码跟不上,因为js是单线程的,会导致解码和解封装的速度跟不上,导致堆积量过大,从而堵塞了接收流数据,从而触发了服务器端数据堆积过大,从而从物理层断开ws连接,从而导致浏览器抛出了1006错误。

这种情况下可以考虑检查服务器端的程序和硬件是否正常工作,查看服务器端的日志和监控数据来找出问题所在。

解决方案

需要在nginx加入一段proxy的timeout超时设置,加了500s。

播放器支持内部检测到1006错误,会内部自动重连。

EasyPlayer.js播放器项目系列已经具备Windows、Android、iOS三个平台的稳定运行版本,EasyPlayer.js无插件H5播放器还支持Linux平台,在播放器领域是多平台的最佳选择,并且EasyPlayer.js播放器系列项目底层采用了高性能的EasyRTSPClient组件,其低延时控制在行业处于领先位置。

相关推荐
遂心_20 分钟前
React初学者必备:用“状态管家”Reducer轻松管理复杂状态!
前端·javascript·react.js
用户33790448021727 分钟前
ECMA6 ---- Class篇 (重难点个人向)
javascript
李明卫杭州28 分钟前
前端实现多标签页通讯
前端·javascript
在钱塘江33 分钟前
《你不知道的JavaScript-上卷》第二部分-this和对象原型-笔记-6-行为委托
前端·javascript
Point33 分钟前
[ahooks] useControllableValue源码阅读
前端·javascript
HexCIer34 分钟前
cbT.js: 一个让模板继承变得优雅的 Node.js 模板引擎
javascript·node.js
独立开阀者_FwtCoder41 分钟前
踩坑无数后,我终于总结出这份最全的 Vue3 组件通信实战指南
前端·javascript·vue.js
20261 小时前
12. npm version方法总结
前端·javascript·vue.js
帅夫帅夫1 小时前
JavaScript继承探秘:从原型链到ES6 Class
前端·javascript
小赖同学啊2 小时前
将Blender、Three.js与Cesium集成构建物联网3D可视化系统
javascript·物联网·blender