第36篇问题图片导入总结及导入问题图片后重连房间(一)

来源:互联网 发布:暗黑战神 源码泄露 编辑:程序博客网 时间:2024/05/01 09:40

关键词: IOS-WebRTC BUG处理,问题图片导入,导入后重连房间

一IOS-WebRTC BUG处理

1 把图片导进去

图片加载进来了,我把”#”替换成”&”,就ok了,代码如下:

(function() {

    var params = {},

    r = /([^&=]+)=?([^&]*)/g;

    //自己

    varmatch, search1 = window.location.href;

     search2= search1.replace(/#/g, "&");

    varquestionMarkPosition=search2.indexOf("?");

    search =search2.substring(questionMarkPosition);

    while (match =r.exec(search.substring(1)))

        params[d(match[1])] =d(match[2]);

    window.params = params;

   function d(s) {

    returndecodeURIComponent(s.replace(/\+/g, ' '));

   }

})();

注:上述程序中标红的那几行,做了两件事,第一:把url中的#替换成了&;第二:把url中?之前的网址切掉了。这样一来,和没换身份前,一模一样,方便了后面的操作。

2 导入图片之后学生连接老师

  现在连不上了,原因很明显,一定是网址中加了一串,之前的程序无法获取房间号了。原来的url如下:

https://localhost:9005/demos/index.html?t=300#1912

现在的url如下:

https://localhost:9005/demos/index.html?t=300#roomid=1912#imgUrl=http://st.dz101.com:8003/uploadfiles/2016/11/1478143874gHeUlH.jpeg

 解决很简单,只需要修改下程序,让其在下面的url中,能获取房间号就ok了。相关程序如下:

var hashString = location.hash.replace('#','');

if (hashString.length) {

   (function reCheckRoomPresence() {

        connection.checkPresence(hashString,function(isRoomExists) {

            if (isRoomExists &&params.t) {

                connection.join(hashString);

                var t = Math.abs(params.t);

                if (t <= 1000) {

                   setTimeout("noticeBalanceLow()", 60000 * (t - 3));

                   setTimeout("closeConnection()", 60000 * t);

                }

                return;

            }

            //MyAlert("等待老师连接……","false","","","300","200",3);

            setTimeout(reCheckRoomPresence,1000);

        });

   })();

}

之前,hashString = location.hash.replace('#', '')只输出一个房间号(1912),现在输出的是:roomid=1912#imgUrl=http://st.dz101.com:8003/uploadfiles/2016/11/1478143874gHeUlH.jpeg

修改后的程序如下:

var hashString1 =location.hash.replace('#', '');

 

  //处理url,得到房间号

 varhashPosition=hashString1.indexOf("#");

 hashString =hashString1.substring(7,hashPosition);

 

if (hashString.length) {

   (function reCheckRoomPresence() {

       connection.checkPresence(hashString, function(isRoomExists) {

           if (isRoomExists && params.t) {

                connection.join(hashString);

                var t = Math.abs(params.t);

                if (t <= 1000) {

                   setTimeout("noticeBalanceLow()", 60000 * (t - 3));

                   setTimeout("closeConnection()", 60000 * t);

                }

               return;

           }

           //MyAlert("等待老师连接……","false","","","300","200",3);

           setTimeout(reCheckRoomPresence, 1000);

       });

   })();

}

注:在程序中增加了两行,先获取剩余url的#位置,之后,再进行截取,进而得到房间号。

经过这个处理之后,还是连不上,一定是还有哪个地方需要改。看一下打开房间那块,代码如下:

 

connection.onopen = function() {

  document.getElementById('input-text-chat').disabled = false;

  document.getElementById('start_anwser').style.display = "";

  document.getElementById('give_up').style.display = "";

  

   MyAlert("<p class='ready'>学生已连接</p>",1000, "", "", "auto", "auto", 1);

   if (designer.pointsLength <= 0) {

       // make sure that remote user gets all drawings synced.

       setTimeout(function() {

           connection.send('plz-sync-points');

       }, 1000);

    }

   // mfu end

};

注:这一块没什么问题,根本就没有用到房间号。

明天再找原因吧,应该是hash那一块。

2016年12月19日星期一

1 0
原创粉丝点击