关键词: webRTC IOS,两端发送消息报错处理, 老师端学生端同时弹框
一、webrtc一对一IOS端
1.1 webRTC IOS
1)通过服务器建立信道
这里再次重申,就算WebRTC提供浏览器之间的点对点信道进行数据传输,但是建立这个信道,必须有服务器的参与。WebRTC需要服务器对其进行四方面的功能支持:
a. 用户发现以及通信
b. 信令传输
c. NAT/防火墙穿越
d. 如果点对点通信建立失败,可以作为中转服务器
2) RTCDataChannel
二、bug处理
2.1 今天发现发消息受影响,报错如下:
错误为:
原因为:做学生端时,对event.data的约束影响了消息的发送与接收。
解决办法:
把这个函数再复制一遍,改个名字,只用于两端聊天时用,把其它的删除即可!
并把原来那个聊天时,调的函数appednDIV改为appendDIV_chat,如下:
再次运行如下:
这时,报了一个错,虽说不影响运行,还是要找到原因,报错如下:
现象:老师端发一个消息给学生端,学生端能收到,但学生端报错。
同样:学生端给老师发个消息,老师端能收到,但同时也报了个错。如下:
原因分析:
可能是发消息时,对方同步慢了,没有立即收到。
2.2 老师学生弹框
现在有个需求是:老师端学生端结束答疑后,在各自的页面要弹出花费多长时间.
解决步骤:
1)不管是学生还是老师,点结束答疑,此时,有两种情况:是确实要结束答疑,还是误操作。
注:这时,哪端点的,哪端提示,另不端不能提示。代码支持如下:
if(confirm("您确定结束吗,本次辅导用时"+mnsCommon+"分钟!")){
2)当用户(老师/学生)点确定时,结束答疑按钮变灰色,并把当前页面置空。代码支持如下:
document.getElementById('end_anwser').disabled = true;
window.location.href="about:blank";
之后,向另一端发个消息,让其做相应操作:
connection.send('end');
当用户点取消时,这是误操作,结束答疑按钮不能变色,当前页面也不能置空,更不能给另一端发消息让其做操作。只需返回继续答疑即可:
alert("欢迎继续辅导!");
3)当用户一端已经点确定,另一端接到消息需要做的是:返回所用时间,置空当前页面,代码如下:
alert("本次辅导用时"+mnsCommon+"分钟!知道了");
window.location.href="about:blank";
4)用户一端整体代码如下:
$("#end_anwser").click(function(){
if(confirm("您确定结束吗,本次辅导用时"+mnsCommon+"分钟!")){
document.getElementById('end_anwser').disabled = true;
window.location.href="about:blank";
connection.send('end');
}else{
alert("欢迎继续辅导!");
}
})
另一端代码:
function closeWindowStudent( )
{
alert("本次辅导用时"+mnsCommon+"分钟!知道了");
window.location.href="about:blank";
}
2016年11月4日星期五