IM web sdk 经常性断线问题

2d1eaac70391a1293cf6
2018-09-28 03:08 1.6k 0
2018-09-28 09:39:04,111 INFO c.g.j.p.w.s.WebDriverSampler: ---线程用户ziguang_00167:eeeeeeeeeeeeeeeeeeeziguang_00167登录状态为:成功

2018-09-28 09:40:59,039 ERROR c.g.j.p.w.s.WebDriverSampler: eeeeeeeeeeeeeeeeeeeziguang_00167发送消息失败org.openqa.selenium.WebDriverException: unknown error: must login first

我这边有200多个用户,经常性出现用户登录后隔几分钟就断线的情况,我用jmeter脚本去验证这个发现确实,经常断线,甚至有时候登录都会失败

//init函数我用demo的修改了下增加了入口函数,在success回掉函数里面调用login接口,然后200个用户在短时间内登陆,容易出现用户登录1min重试登陆都无法成功的情况,更大概率出现的是用户登录后间隔一小段时间调用发送单聊消息接口,会提示must login first

```
function userLogin(){

    while(new Date() < new Date("${toLoginTime}")){
         userLog('wait for login');
        Thread.sleep(500);
}
        try
      {
      //在这里运行代码
          userLog('return init("${username}","${password}","${target_nickname}")');
          var res = WDS.browser.executeScript('return init("${username}","${password}","${target_nickname}")');
        Thread.sleep(5000);

// WDS.browser.executeScript('return login("${username}","${password}","${target_nickname}")');

      }
    catch(err)
      {
      //在这里处理错误
      userLog("首次登陆报错了"+err);
      }

var beginTime=new Date().getTime();
var loginWaitTime = ${loginWaitTime}
var loginTimes = 0;
while(new Date().getTime()  < beginTime + loginWaitTime) {
    //判断用户的登陆状态,如果登陆成功了,那么不重试登陆,直接退出while
    //        var isLogin = WDS.browser.executeScript('return getLoginResult()');
    var booleanIsLogin = WDS.browser.executeScript('return global.JIM.isLogin()')
    var isLogin = "";
    if(booleanIsLogin==true){
        isLogin='true';
        }

    if (isLogin == 'true'){
        userLog('eeeeeeeeeeeeeeeeeee${username}'+'登录状态为:成功');
        break;
     }


    loginTimes = loginTimes + 1; 
    userLog("--------------------${username} 的userLogin循环中---------------------");    

    try
      {
      //在这里运行代码
      WDS.browser.executeScript('return init("${username}","${password}","${target_nickname}")');
      }
    catch(err)
      {
      //在这里处理错误
      userLog("单独调用init接口出错了哦!");
      }


}
if (isLogin != 'true'){
    //        //单独调用登陆接口
    try
      {
      //在这里运行代码
      WDS.browser.executeScript('return login("${username}","${password}","${target_nickname}")');
      }
    catch(err)
      {
      //在这里处理错误
      userLog("单独调用登陆接口出错了哦!"+err);
      throw 'eeeeeeeeeeeeeeeeeee${username}'+'用户登录失败,重试登陆次数为:'+loginTimes+'  '+err;        
      }

    userLog('eeeeeeeeeeeeeeeeeee${username}'+'用户登录失败,重试登陆次数为:'+loginTimes);
    throw 'eeeeeeeeeeeeeeeeeee${username}'+'用户登录失败,重试登陆次数为:'+loginTimes;        
}

}

1个回答

热门排序