AnyChat技术支持论坛

标题: 关于anychatsdk兼容不同浏览器的问题 [打印本页]

作者: cg0071    时间: 2013-11-14 12:36
标题: 关于anychatsdk兼容不同浏览器的问题
进入房间函数BRAC_EnterRoom可以调用,但不能触发回调函数OnAnyChatEnterRoom,只有IE可以,火狐,chrome都不可以……

作者: 廖斌    时间: 2013-11-14 12:46
您好。可以将web端的日志发生来看下,日志为插件的安装位置,默认是C:\Program Files\BaiRuiTech\AnyChatWeb
作者: 廖斌    时间: 2013-11-14 12:46
廖斌 发表于 2013-11-14 12:46
您好。可以将web端的日志发生来看下,日志为插件的安装位置,默认是C:\Program Files\BaiRuiTech\AnyChatWe ...

我们是做过兼容性测试的哦,火狐,IE,chome,360都测试过
作者: cg0071    时间: 2013-11-26 18:13
前几天不知道动到哪了,突然就好了,今天又遇到这个问题,ie可以,火狐js是这个错:
Error:Error calling method on NPObject!    anychatsdk.js.297
我是web端,通过服务器端传给我数据时,触发我本地的函数
function OnAnyChatTransBuffer(dwUserId, lpBuf, dwLen)
{
        errorcode = BRAC_EnterRoom(room_id, "", 0); //进入房间
        //调用这个方法的时候,出现上面的错误,求解!
}

日志是:
[2013-11-26 18:10:55(493)]        ---------------------------AnyChat Platform Core SDK Client Log---------------------------
[2013-11-26 18:10:55(494)]        Load BRAnyChatCore.dll success!(V4.8 Build Time:Sep 11 2013 20:23:39)
[2013-11-26 18:10:55(503)]        Load BRMiscUtil.dll success!(V4.8 Build Time:Sep 11 2013 20:21:54)
[2013-11-26 18:10:55(541)]        Load BRMediaUtil.dll success!(V4.8 Build Time:Sep 11 2013 20:21:40)
[2013-11-26 18:10:55(542)]        Load BRMediaShow.dll success!(V4.8 Build Time:Sep 11 2013 20:22:00)
[2013-11-26 18:10:55(543)]        Load BRMediaCore.dll success!(V4.8 Build Time:Sep 11 2013 20:22:16)
[2013-11-26 18:10:55(652)]        Invoke        BRAC_Connect(192.168.7.95,8906)=0
[2013-11-26 18:10:55(662)]        CheckClientSocketLink         Connect(ip=192.168.7.95,port=8906)
[2013-11-26 18:10:55(714)]        Server version: V4.8(Build Time:2013-09-09 20:29:37, Server OS:Linux)
[2013-11-26 18:10:55(717)]        Message        OnConnect(bSuccess:1, errorcode=0)
[2013-11-26 18:11:00(197)]        Invoke        BRAC_Connect(192.168.7.95,8906)=0
[2013-11-26 18:11:00(210)]        Invoke        LoginServer(username=seat01)
[2013-11-26 18:11:00(251)]        Message        OnLoginSystem(userid=101,errorcode=0,username=?, msg deliver worked(1)
[2013-11-26 18:11:00(258)]        Connection to streaming media server successfully!(udp delay:7ms)




作者: admin    时间: 2013-11-26 18:20
您好,请尝试如下解决方案:
  1. function OnAnyChatTransBuffer(dwUserId, lpBuf, dwLen) {
  2.         setTimeout(function(){ BRAC_EnterRoom(room_id, "", 0); },100);   //进入房间
  3. }
复制代码

作者: cg0071    时间: 2013-11-26 18:31
本帖最后由 cg0071 于 2013-11-26 18:48 编辑

您好,火狐还有那个js错误,而且
errorcode = BRAC_EnterRoom(room_id, "", 0); //进入房间
返回的errorcode = undefined,而且还是进不去房间
ie返回的errorcode也是undefined,但是可以进去房间

我在自己本地的js代码中直接调用
function OnAnyChatTransBuffer(dwUserId, lpBuf, dwLen)
{
      errorcode = BRAC_EnterRoom(room_id, "", 0);
}
这个时候各个浏览器都木有问题,

通过服务器来触发我本地的function OnAnyChatTransBuffer(dwUserId, lpBuf, dwLen) 函数时就出现上面火狐遇到的问题

作者: admin    时间: 2013-11-26 18:54
您好,请问有尝试上面的:setTimeout的方式来调用BRAC_EnterRoom吗?
作者: cg0071    时间: 2013-11-26 21:48
admin 发表于 2013-11-26 18:54
您好,请问有尝试上面的:setTimeout的方式来调用BRAC_EnterRoom吗?

对,我就是按照你说的setTimeout后,才出现的errorcode = undefined  (第六楼)
作者: admin    时间: 2013-11-26 22:34
您好,设置setTimeout之后,Chrome可以了吗?
ie返回的errorcode也是undefined,但是可以进去房间
这个不合理喔,既然能进房间,就说明调用API成功了,理论上说应该不会返回undefined?

作者: cg0071    时间: 2013-11-27 09:30
本帖最后由 cg0071 于 2013-11-27 09:40 编辑

这么晚谢谢您的回答!
我再把问题描述一遍吧:
我是web端
1.我进入大厅后,自己在js写一个setTimeout,五秒后触发进入房间函数errorcode = BRAC_EnterRoom(room_id, "", 0);这个时候可以进入房间,各个浏览器都可以
2.我进入大厅后,服务器端返回给我消息后,触发我本地的函数function OnAnyChatTransBuffer(dwUserId, lpBuf, dwLen)
{
      errorcode = BRAC_EnterRoom(room_id, "", 0);//进入房间
}
这个时候,ie是可以进去房间,
但是火狐和chrome的js报错进不去房间,错误如下:
Uncaught Error: Error calling method on NPObject. anychatsdk.js:297
3.上边您说在OnAnyChatTransBuffer函数里加上setTimeout,100,如下:
function OnAnyChatTransBuffer(dwUserId, lpBuf, dwLen)
{
      setTimeout(function(){          errorcode = BRAC_EnterRoom(room_id, "", 0); //进入房间
      }, 100);
}
这个时候依然是步骤2的错误

对了问一下,这个和seatIndex.jsp的声明类型有关系吗?
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">




作者: 廖斌    时间: 2013-11-27 09:49
cg0071 发表于 2013-11-27 09:30
这么晚谢谢您的回答!
我再把问题描述一遍吧:
我是web端

您好,  setTimeout(function(){          errorcode = BRAC_EnterRoom(parseInt(room_id), "", 0); //进入房间
      }, 100);试试

作者: cg0071    时间: 2013-11-27 09:59
廖斌 发表于 2013-11-27 09:49
您好,  setTimeout(function(){          errorcode = BRAC_EnterRoom(parseInt(room_id), "", 0); // ...

偶的个神娜!!!可以了……
房间编号竟然为字符串,IE上可以,火狐chrome就不行了,这种问题是我们使用的时候需要注意的还是你们后台需要处理的?
作者: admin    时间: 2013-11-27 11:02
房间编号竟然为字符串,IE上可以,火狐chrome就不行了,这种问题是我们使用的时候需要注意的还是你们后台需要处理的?

您好,是您的javascript脚本需要处理的,我们的AnyChat for Web SDK开发文档有明确的说明,您可以看一下API接口声明,有明确的说roomid是int型。
作者: admin    时间: 2013-11-27 11:27
您好,刚才咨询了开发团队,目前已更新SDK包里面的插件,在firefox、chrome浏览器中可以支持字符串类型的roomid参数传入,请更新一下插件:http://www.anychat.cn/download.html?t=Web
作者: cg0071    时间: 2013-11-27 13:41
admin 发表于 2013-11-27 11:27
您好,刚才咨询了开发团队,目前已更新SDK包里面的插件,在firefox、chrome浏览器中可以支持字符串类型的ro ...

非常感谢!




欢迎光临 AnyChat技术支持论坛 (http://bbs.anychat.cn/) Powered by Discuz! X3