From f62f19d3b0be3afeb98fdaa6d707402799b15e0c Mon Sep 17 00:00:00 2001 From: windr0id Date: Tue, 16 Jan 2018 22:24:19 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E5=BC=82=E5=B8=B8=E6=B5=81=E7=A8=8B?= =?UTF-8?q?=E4=BF=9D=E8=AF=81=E5=AE=8C=E6=88=90=E9=80=80=E5=87=BA=E6=93=8D?= =?UTF-8?q?=E4=BD=9C=EF=BC=8C=E4=BF=9D=E6=8A=A4token=E4=B8=8D=E5=A4=B1?= =?UTF-8?q?=E6=95=88=EF=BC=9B=E5=8A=A0=E5=85=A5=E7=BB=93=E6=9D=9F=E6=8E=A7?= =?UTF-8?q?=E5=88=B6=EF=BC=9B=E9=80=82=E5=BD=93=E5=BB=B6=E6=97=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- index.js | 139 ++++++++++++++++++++++++++++++------------------------- 1 file changed, 76 insertions(+), 63 deletions(-) diff --git a/index.js b/index.js index 51bbd80..bf6d141 100644 --- a/index.js +++ b/index.js @@ -9,7 +9,7 @@ import QuizModel from './models/quiz' const options = { method: 'POST', hostname: 'question.hortor.net', - path: '/question/fight/intoRoom', + path: '/question/bat/intoRoom', headers: { 'Content-Type': 'application/x-www-form-urlencoded' } @@ -23,12 +23,12 @@ const options = { */ const userForgeInfo = { player1: { - uid: '这里填入用户1的uid', - token: '这里填入用户1的token' + uid: '填写UID', + token: '填写TOKEN' }, player2: { - uid: '这里填入用户2的uid', - token: '这里填入用户2的token' + uid: '填写UID', + token: '填写TOKEN' } } @@ -58,11 +58,12 @@ const intoRoom = async (player) => { } let sign = createSignature(params, userForgeInfo[player].token) params.sign = sign - console.log(params) + //console.log(params) const res = await rp.post( - 'https://question.hortor.net/question/fight/intoRoom', + 'https://question.hortor.net/question/bat/intoRoom', { form: params }) - console.log('intoRoom', res) + console.log('intoRoom: '+player) + //console.log(res) roomID = JSON.parse(res).data.roomId } catch (err) { console.error(err.message) @@ -70,23 +71,20 @@ const intoRoom = async (player) => { } const leaveRoom = async (player) => { - try { - let params = { - roomID, - uid: userForgeInfo[player].uid, - t: new Date().getTime() - } - let sign = createSignature(params, userForgeInfo[player].token) - params.sign = sign - console.log(params) - const res = await rp.post( - 'https://question.hortor.net/question/fight/leaveRoom', - { form: params }) - console.log(res) - // roomID = JSON.parse(res).data.roomId - } catch (err) { - console.error(err.message) - } + let params = { + roomID, + uid: userForgeInfo[player].uid, + t: new Date().getTime() + } + let sign = createSignature(params, userForgeInfo[player].token) + params.sign = sign + //console.log(params) + const res = await rp.post( + 'https://question.hortor.net/question/bat/leaveRoom', + { form: params }) + console.log('leaveRoom: '+player); + console.log(res) + // roomID = JSON.parse(res).data.roomId } const beginFight = async () => { @@ -100,7 +98,7 @@ const beginFight = async () => { params.sign = sign const res = await rp.post( - 'https://question.hortor.net/question/fight/beginFight', + 'https://question.hortor.net/question/bat/beginFight', { form: params } ) console.log('beginFight: ', res) @@ -122,10 +120,10 @@ const findQuiz = async (num) => { params.sign = sign const res = await rp.post( - 'https://question.hortor.net/question/fight/findQuiz', + 'https://question.hortor.net/question/bat/findQuiz', { form: params } ) - console.log('findQuiz: ', res) + console.log('findQuiz') return JSON.parse(res) } catch (err) { console.error(err.message) @@ -145,10 +143,10 @@ const chooseAnswer = async (player, num, answer = 0) => { params.sign = sign const res = await rp.post( - 'https://question.hortor.net/question/fight/choose', + 'https://question.hortor.net/question/bat/choose', { form: params } ) - console.log('chooseAnswer: ', res) + console.log('chooseAnswer: '+player) return JSON.parse(res) } catch (err) { console.error(err.message) @@ -156,23 +154,19 @@ const chooseAnswer = async (player, num, answer = 0) => { } const getResults = async (player) => { - try { - let params = { - roomID, - uid: userForgeInfo[player].uid, - t: new Date().getTime() - } - let sign = createSignature(params, userForgeInfo[player].token) - params.sign = sign + let params = { + roomID, + uid: userForgeInfo[player].uid, + t: new Date().getTime() + } + let sign = createSignature(params, userForgeInfo[player].token) + params.sign = sign - const res = await rp.post( - 'https://question.hortor.net/question/fight/fightResult', - { form: params } - ) - console.log('getResults') - } catch (err) { - console.error(err.message) - } + const res = await rp.post( + 'https://question.hortor.net/question/bat/fightResult', + { form: params } + ) + console.log('getResults: '+player) } const sleep = (numberMillis) => { @@ -202,8 +196,9 @@ const startAnswer = async () => { ++success } let result = await chooseAnswer('player1', i + 1, answer) + sleep(300) // 玩家2是否可以不作答? - await chooseAnswer('player2', i + 1) + await chooseAnswer('player2', i + 1, answer) let params = Object.assign(quiz.data, {answer: result.data.answer}) if (!one) { @@ -211,7 +206,7 @@ const startAnswer = async () => { const saved = await quizModel.save() console.log(saved) } - sleep(200) + sleep(300) } let count = await QuizModel.count() console.log(`success: ${success} total: ${count}`) @@ -222,24 +217,42 @@ const startAnswer = async () => { } const start = async () => { - // let i = 100 - while (1) { + //异常流程保证完成退出操作,保护token不失效 + let failed = false + //加入一个控制设置 + while (fs.readFileSync('./control') == '1' || !failed) { // 1. 有可能上一次流程异常,则会无法进行下一次的阶段 // 2. 有可能initRoom超时,则需要重新initRoom // play1创建房间 - roomID = -1 - await intoRoom('player1') - // play2加入房间 - await intoRoom('player2') - // 开始答题 - await beginFight() - // 获取题目, 进行答题 - await startAnswer() - await getResults('player1') - await getResults('player2') - await leaveRoom('player1') - await leaveRoom('player2') - sleep(1000) + if(!failed){ + roomID = -1 + await intoRoom('player1') + sleep(100) + // play2加入房间 + await intoRoom('player2') + sleep(100) + // 开始答题 + await beginFight() + sleep(100) + // 获取题目, 进行答题 + await startAnswer() + } + try{ + await getResults('player1') + sleep(100) + await getResults('player2') + sleep(100) + await leaveRoom('player1') + sleep(100) + await leaveRoom('player2') + sleep(100) + failed = false + }catch (err) { + console.error(err.message) + failed = true + } + console.log('loop end.') + sleep(500) } } From f9cd7bf965135ad599a053b58741119203765f7c Mon Sep 17 00:00:00 2001 From: windr0id Date: Tue, 16 Jan 2018 23:05:42 +0800 Subject: [PATCH 2/2] catch intoRoom err && fixd bug --- index.js | 55 ++++++++++++++++++++++++++----------------------------- 1 file changed, 26 insertions(+), 29 deletions(-) diff --git a/index.js b/index.js index bf6d141..b8d2cb3 100644 --- a/index.js +++ b/index.js @@ -50,24 +50,20 @@ const createSignature = (params, token) => { let roomID = -1 const intoRoom = async (player) => { - try { - let params = { - roomID, - uid: userForgeInfo[player].uid, - t: new Date().getTime() - } - let sign = createSignature(params, userForgeInfo[player].token) - params.sign = sign - //console.log(params) - const res = await rp.post( - 'https://question.hortor.net/question/bat/intoRoom', - { form: params }) - console.log('intoRoom: '+player) + let params = { + roomID, + uid: userForgeInfo[player].uid, + t: new Date().getTime() + } + let sign = createSignature(params, userForgeInfo[player].token) + params.sign = sign + //console.log(params) + const res = await rp.post( + 'https://question.hortor.net/question/bat/intoRoom', + { form: params }) + console.log('intoRoom: '+player) //console.log(res) - roomID = JSON.parse(res).data.roomId - } catch (err) { - console.error(err.message) - } + roomID = JSON.parse(res).data.roomId } const leaveRoom = async (player) => { @@ -220,22 +216,23 @@ const start = async () => { //异常流程保证完成退出操作,保护token不失效 let failed = false //加入一个控制设置 - while (fs.readFileSync('./control') == '1' || !failed) { + fs.writeFileSync('./control.ini', '1') + while (fs.readFileSync('./control') == '1' || failed) { // 1. 有可能上一次流程异常,则会无法进行下一次的阶段 // 2. 有可能initRoom超时,则需要重新initRoom // play1创建房间 if(!failed){ - roomID = -1 - await intoRoom('player1') - sleep(100) - // play2加入房间 - await intoRoom('player2') - sleep(100) - // 开始答题 - await beginFight() - sleep(100) - // 获取题目, 进行答题 - await startAnswer() + try{ + roomID = -1 + await intoRoom('player1') + sleep(100) + // play2加入房间 + await intoRoom('player2') + sleep(100) + }catch (err){ + console.error(err.message) + continue + } } try{ await getResults('player1')