本站不兼容 8 以前的版本的 Interner Explorer 浏览器(或基于这些版本的 IE 的其他浏览器),并且页面样式不完全兼容 IE 8,我们建议你升级至 IE 9 或改用其他非 IE 浏览器

Mozest™

  • 正在加载用户菜单…

开放、分享、互助

转播到腾讯微博
返回列表 回复 发帖

[求助] Nightly 在bilibili.tv下卡停 及解决办法

本帖最后由 dindog 于 2011-12-22 14:34 编辑

版本是10111220之后的Nightly,在聊天室建立Websocket链接时,由于代码本身的问题,连接了都不断中断,重新连接(chrome也是n个循环的,不过次数少很多,而且人家也不死机……)。如果不用聊天室的,abp阻挡掉bilibar.js就好了。出问题的是这段:

以前firefox这段是会跳到else分支,所以之前的版本没问题。
  1. var reconnectCount=0;
  2. var reconnection;
  3. chatRoomClass.prototype.initws=function(){
  4.         this.JSMode=true;
  5.         self=this;
  6.         if("WebSocket"in window){
  7.                 if(this.ws!=null){
  8.                         self.chatlog('',0,"[信息] 连接已存在...正在中断重新连接");
  9.                         this.ws.close();
  10.                 }
  11.                 resetConnection=true;
  12.                 this.ws=new WebSocket("ws://"+chatRoom.CHAT_SERVER+":88/"+this.currentChatRoom);
  13.                 this.status.innerHTML="WS连接中...";
  14.                 var self=this;
  15.                 this.ws.onopen=function(){clearInterval(reconnection);
  16.                 self.status.innerHTML='已连接.';
  17.                 resetConnection=false;$("#submit_msg")[0].disabled=false;
  18.                 if(self.onconnect!=null)self.onconnect();};
  19.                 this.ws.onclose=function(){self.status.innerHTML='已断开.';
  20.                
  21.                         if(!resetConnection)self.chatlog('',0,"[信息] 与服务器连接中断...正在重新连接 重试次数: "+reconnectCount++);
  22.                         if(reconnectCount>30){
  23.                                 reconnection=setInterval(function(){clearInterval(reconnection);self.initws();},30000);
  24.                                 }
  25.                         else{
  26.                                 reconnection=setInterval(function(){clearInterval(reconnection);self.initws();},1000);
  27.                                 }
  28.                 };
  29.                 this.ws.onerror=function(){
  30.                         self.status.innerHTML='错误.';self.chatlog('',0,"[信息] 与服务器连接错误!");
  31.                         var reconnection=setInterval(function(){clearInterval(reconnection);self.initws();},1000);
  32.                         };
  33.                 this.ws.onmessage=function(msg){
  34.                         msgdata=msg.data.replace(/[\x5C]{2}/g,"\x5C");
  35.                         if(msg.data=="REST"){
  36.                                         self.initws();
  37.                         }
  38.                         else{
  39.                                 eval(msgdata);
  40.                         }
  41.                 };
  42.         }
  43.         else{
  44.                 this.chatlog('','SYSTEM','您的浏览器不支持Flash和WebSocket,无法使用本功能');
  45.                 }
  46. };
复制代码
我的回帖都是滥竽充数的,有其它人回帖时一般可以无视我哈~~
Nightly12.a1也是这样,我已经卸了换上9.0.1 一切都好了。
Nightly12.a1也是这样,我已经卸了换上9.0.1 一切都好了。
lanjian625 发表于 2011-12-22 00:56
昨天新出现的bug。请问你是什么系统
我的回帖都是滥竽充数的,有其它人回帖时一般可以无视我哈~~
3# dindog

XP 系统
5# dindog

怎么解决问题
21号的nightly还是那样
win7也会这样啊~21号的版本
12.0a1最新版此问题还是存在
9.0没问题
本帖最后由 slimx 于 2011-12-22 14:42 编辑

禁掉就好.
聊天室?之前的版本功能正常么?
可能是刚刚加入这个功能,还不完善,也可能是只适用于chrome
本帖最后由 dindog 于 2011-12-22 15:12 编辑
禁掉就好.
聊天室?之前的版本功能正常么?
可能是刚刚加入这个功能,还不完善,也可能是只适用于chrome
slimx 发表于 2011-12-22 14:31
之前正常啊,Websocket我搜索了一下,说是Firefox 4就引入的,但前天之前。window.WebSocket 都是undefined,现在和chrome一样返回对象了。不知道以前是不是用ajax的

chrome和Firefox有问题的版本,聊天室(要登录)会不断提示 [信息] 连接已存在...正在中断重新连接",只是频率不一样。基本无法使用了,网站本身应该也是要改的。
我的回帖都是滥竽充数的,有其它人回帖时一般可以无视我哈~~
必须要要注册才能用么,截个图看看
本帖最后由 dindog 于 2011-12-22 15:59 编辑
必须要要注册才能用么,截个图看看
slimx 发表于 2011-12-22 15:22
卡死的话貌似不用登录。
可以用我id, dindog 12345678

控制台也会出警告的。
[15:47:56.049] Firefox can't establish a connection to the server at ws://chat.bilibili.tv:88/1. @ file:///z://z.js:37

IE9和Fx9都是正常的
我的回帖都是滥竽充数的,有其它人回帖时一般可以无视我哈~~
本帖最后由 slimx 于 2011-12-22 16:37 编辑

能发信息,但是不会自动刷新吧

用user脚本把
  1.   if("WebSocket"in window){
复制代码
改成
  1. if(false){
复制代码
能发信息,但是不会自动刷新吧

用user脚本把
  if("WebSocket"in window){
改成 if(false){
slimx 发表于 2011-12-22 16:22
9是能收能发的。会不会有什么功能坏了。
我的回帖都是滥竽充数的,有其它人回帖时一般可以无视我哈~~
本帖最后由 slimx 于 2011-12-22 17:26 编辑

应该没有.
改了一下,有点奇怪
附件: 您所在的用户组无法下载或查看附件
1

评分次数

  • dsyo2008

本帖最后由 slight 于 2011-12-23 13:52 编辑
应该没有.
改了一下,有点奇怪
slimx 发表于 2011-12-22 17:23
应用了LS提供的脚本,打开B站不会再导致浏览器卡死了。
楼主提供的禁用脚本的方法也有效,另外也可在about:config,将其中network.websocket.enabled项设为false,亦可起到同等效果。
版本是10111220之后的Nightly,在聊天室建立Websocket链接时,由于代码本身的问题,连接了都不断中断,重新连接(chrome也是n个循环的,不过次数少很多,而且人家也不死机……)。如果不用聊天室的,abp阻挡掉biliba ...
dindog 发表于 2011-12-22 00:20
看过此帖才了解这一问题的存在。
这是很好的研究心得,解决了一个大问题啊。不知这个问题在firefox自身随后的版本更新中能否得到解决修复?
非常感谢,问题解决了。

有人去bugzilla发bug么?
楼主也说了,这不完全算FX的问题
主要是bilibili自身网站的代码出错,但之前的版本中不支持Websocket,所以不会运行这些错误代码,而现在支持了,于是就有问题了

这问题在Chrome也会出现,但Chrome有防范机制,应该是会禁止相同的代码过度频繁的运行

所以若按现在的情况来看,重点得先修正的是bilibili,把自身网站的错误代码修正好,不然FX能加的最多也只是类似Chrome的防范机制而已
呵呵,有人报告到bilibili,网站改了这部分,现在已经不会崩溃了。现在类似chrome。。。

本来想Firefox修复了自己部分才去bilibili上报的。。现在还想重现的可以用mason重定向到这个文件。
附件: 您所在的用户组无法下载或查看附件
我的回帖都是滥竽充数的,有其它人回帖时一般可以无视我哈~~
本帖最后由 dsyo2008 于 2012-1-6 21:46 编辑

12.a1 x64 终于解决了= =