Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
493 views
in Technique[技术] by (71.8m points)

如何使用websocket-bench压测用户先登录,后发送其他信息的场景

问题

在使用websocket-bench压测一个长连接服务,执行脚本g.js的内容是:

module.exports = {
 
  //建立连接后所要做的事情
  onConnect: function(client, done){
    //登录
    client.write({"action":"login","cid":1,"session":"123456"});
    done();
  },
  //向服务器民送消息时运行的代码
  sendMessage: function(client, done) {
    
    //说话
    client.write({"action":say","content":"hhhhhhhh"});
    done();
  }
};

执行压测

websocket-bench -a 10 -c 1 -w 8 -m 8 -t primus -p websockets ws://127.0.0.1 -g g.js -o result

结果发现,在长连接建立之后发送了登录信息之后,马上发送了说话的信息,而说话的功能是依赖用户登录态的,这个时候登录动作还没有处理完成,导致sendMessage发送的消息不能像预期一样处理,请问有没有解决的方法。(曾想过在onConnect中实现sleep,但是javascript这种单线程模式会导致整个压测工具执行变慢,得不到好的压测结果)


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)
等待大神答复

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...