方法一:
本地mediasoup-demo 打包上传到服务器即可
tar zcf mediasoup-demo.tar.gz mediasoup-demo
上传 mediasoup-demo.tar.gz 到云端
解压
运行server端: cd mediasoup-demo/server ; npm start;
运行app端: cd mediasoup-demo/app; npm start;
方法二:
按本地流程重新安装一遍mediasoup server 和 mediasoup app
配置:
cp config.example.js config.js
1. https 证书配置
2. webrtc监听ip地址配置
webRtcTransportOptions :
listenIps :
ip : process.env.MEDIASOUP_LISTEN_IP || '0.0.0.0',
后边的'0.0.0.0' 加上去, 否则会出现连接error 500的错误; (Can not join room)
遇到问题(TODO):
1. 本地web端访问 https://118.178.125.107:3000/?roomId=1 耗时至少1分钟能显示出界面
问题分析:
在加载的界面按F12调试, 可以看到调试界面, 点击network, 可以看到html网络交互, 看到有一个11.5M的mediasoup-demo-app.js在下载, 由于是部署在云上, 所以下载该js文件很耗时, 显示耗时时间为1.4min; 所以等待时间很长; 到此, 等待时间长的原因已经找到;
但为什么每次都会去加载这个文件, 还有为什么这个文件这么大?
TODO: 此处可能需要web 客户端缓存起来, 不要每次都去获取那么大的文件!
尝试在index.html里边加入缓存机制, 没有用; 尝试搭建nginx, 把server目录下的public目录暴露到nginx; 会出现不能加入房间问题; 不再深入, 暂时放弃; 加载时间长点就长点吧, 不影响功能就好; 后续有时间再搞搞;
2. 两个web端加入相同房间后没有远端数据(音视频数据), 并且显示chat unavaliable;
以上情况部署在本地时没有碰到, 待分析原因 (部署金山云和阿里云一样的效果);
调试过程:
在客户端加载过程中, 按F12,开启调试, 看控制台输出, 发现:
mediasoup-client:Transport connection state changed to disconnected
调试中发现没有连接到服务器过, 后来想估计是服务器监听ip没有配置对;
配置:
webRtcTransportOptions :--> listenIps : --> ip : process.env.MEDIASOUP_LISTEN_IP || '172.16.223.130', 为私网ip;
webRtcTransportOptions :--> listenIps : --> announcedIp : process.env.MEDIASOUP_ANNOUNCED_IP || 'xxx.xxx.xxx.xxx' 为公网ip;
至此, web界面显示和本地一样了, 可以正常通信了;
网友评论