You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何优化Node.js版Kahoot机器人的缓慢加入问题?

兼顾Kahoot机器人加入成功率与速度的解决方案

你的问题核心是串行执行异步请求导致速度过慢,而完全并行又触发了Kahoot服务器的并发限制,导致部分机器人连接失败。以下是具体的优化方案:

问题根源

  • 串行执行(保留async/await):每个机器人的连接请求必须等待上一个完成才会发起,总耗时为「机器人数量 × 1.5秒」,所有机器人都能成功加入,但整体速度极慢。
  • 完全并行(移除async/await):所有请求瞬间并发发起,服务器会拦截大量高频请求,脚本虽显示4秒内全部“已加入”,但实际仅6个机器人成功连接。

优化思路:并发控制(分批并行)

通过限制同时发起的连接请求数量,既规避服务器的限流机制,又能大幅提升整体速度:

  1. 将机器人分成若干批次,每批次同时发起固定数量的连接请求
  2. 等待当前批次所有请求完成后,再发起下一批次

修改后的代码

bots = [];
var joined = 0;
const BATCH_SIZE = 5; // 可根据测试调整,建议从5-10开始尝试

// 初始化所有机器人实例
for (let i = 0; i < process.argv[3]; i++) {
    bots[i] = new Kahoot;
} 

async function runbots() {
    // 按批次处理机器人连接
    for (let batchStart = 0; batchStart < bots.length; batchStart += BATCH_SIZE) {
        // 截取当前批次的机器人
        const currentBatch = bots.slice(batchStart, batchStart + BATCH_SIZE);
        
        // 并行发起当前批次的所有连接请求
        await Promise.all(currentBatch.map(async (bot, idx) => {
            const botId = batchStart + idx;
            const startTime = Date.now();
            try {
                await bot.join(process.argv[2], `${randomname(15)}${botId}`);
                joined++;
                const endTime = Date.now();
                log(colors.cyan(`Bots Joined: ${joined}/${process.argv[3]} | ${((joined/process.argv[3])*100).toFixed(1)}% | Last Join Time: ${(endTime - startTime)/1000}s`));
            } catch (err) {
                console.log(`Bot ${botId} join failed:`, err);
            }
        }));
    }
    console.log("All Bots Joined!".green);
};

runbots();

关键调整说明

  • BATCH_SIZE:控制每批同时连接的机器人数量,可根据实际测试结果调整(若仍有失败则减小数值,若速度还能提升则适当增大)
  • Promise.all:实现同一批次内的并行请求,同时等待整批完成后再处理下一批,平衡速度与成功率
  • 简化计数逻辑:移除了错误时的joined--,避免计数混乱(失败的机器人不会增加joined)
  • 改用try/catch替代then/catch嵌套,代码结构更清晰

额外优化建议

  • 给每个连接请求添加随机延迟(如await new Promise(resolve => setTimeout(resolve, Math.random() * 500))),进一步降低被服务器识别为自动化请求的概率
  • 检查randomname生成的名称是否符合Kahoot的命名规则(如长度、字符限制),避免因名称不合法导致的连接失败

内容的提问来源于stack exchange,提问作者Coll y

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 00:45:59