zoukankan      html  css  js  c++  java
  • TSINGSEE青犀视频开发低延迟直播系统webrtc-client获取视频流出现webscocket连接状态错误优化

    本文还是和大家分享下我们的WebRTC开发,之前也讲了TSINGSEE青犀视频开发的webrtc-client软件已经初具模型,目前要做的是推流测试和细节优化,优化完成后将会和上线提供给大家测试使用。

     

    在webrtc-client的开发中,我们发现获取视频流出现webscocket连接状态错误,websocket初始化后,发送send函数时报错:
    “Uncaught DOMException: Failed to execute ‘send’ on ‘WebSocket’: Still in CONNECTING state.”

    查阅MDN(https://developer.mozilla.org/zh-CN/docs/Web/API/WebSocket)资料发现,webscoket连接标志有四个值,分别对应不同的状态,如下:

    • WebSocket.CONNECTING:值为0,表示正在连接;
    • WebSocket.OPEN:值为1,表示连接成功,可以通信了;
    • WebSocket.CLOSING:值为2,表示连接正在关闭;
    • WebSocket.CLOSED:值为3,表示连接已经关闭,或者打开连接失败。

    了解了WebSocket四个标志的值,我们就知道问题产生的原因是WebSocket处在正在连接的状态(CONNECTING),其实还没有连接成功,又调用了websocket.send函数,因此发送的字符串未发送出去,所以出现了此错误。

    websocket有open、close、message、error监听函数。所以只需要在websocket open函数里面执行send方法,这样此问题就得以解决。

    	let ws = new WebSocket(“wss://xxxxxxxxx”);
    	ws.onopen = () => {
    			ws.send(“send string”);
    	}
    

    关于WebRTC的开发,我们后续还会不定期更新,大家可以关注我们获取最新功能的上线,如果大家还想了解更多关于TSINGSEE青犀视频开发平台的相关知识,欢迎联系我们。

  • 相关阅读:
    ES7/ES8 语法学习
    JavaScript中this对象原理简洁说明
    浅谈http协议
    各个浏览器之间常见的兼容性问题
    npm -v 报错:cannot find module 'core-util-is'
    对象遍历的几种方法
    Vue项目如何关闭Eslint检测
    axios 基本运用
    如何去掉vue路由中的#
    vue 父子组件、兄弟组件传值
  • 原文地址:https://www.cnblogs.com/TSINGSEE/p/14378410.html
Copyright © 2011-2022 走看看