开发环境:
- vue/cli 4.3.1搭建的全家桶
- TypeScript 3.83
- SIP.js 0.16.1
- Chrome 81.0
在接入Websocket和SIPURI之后,创建UserAgent和注册Register成功,然后发送通话邀请报错:
TypeError Cannot read property 'getUserMedia' of undefined
由于本地暂时没有麦克风,只有摄像头,所以认为是设备不能完全支持的问题。但是获取摄像头和麦克风权限的弹框没有出现,随即否认该判断。
Starting with Chrome 47, getUserMedia() requests are only allowed from secure origins: HTTPS or localhost. link
然后搜索到原因是该方法需要在HTTPS的支持,虽然localhost也可以解决问题但是综合考虑还是打开HTTPS更好,于是打开vue/cli的HTTPS支持,通过命令行或者 vue ui在任务 - serve- 参数 - HTTPS处开启。虽然浏览器仍然提示不安全,但是硬件权限已经可以开启。

开启HTTPS后
现在已经可以发出通话邀请,问题解决。