本文还是和大家分享下我们的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青犀视频开发平台的相关知识,欢迎联系我们。