Commit e0fe4d6c authored by 何娜's avatar 何娜

调试ws

parent ee00c36c
Pipeline #27890 passed with stage
in 22 seconds
......@@ -93,10 +93,112 @@ class TaskController extends Controller {
// key: String(task_id) + data.data.orderId,
// value: { status: 'login', note: { message: 'login' } },
// });
//ctx.success({ errcode: 0, taskId: task_id });
// ctx.success({ errcode: 0, taskId: task_id });
ctx.success({ errcode: 0, data: { task_id } });
}
async wslink() {
const { ctx, service } = this;
console.log('【wslink】ctx---', ctx);
const { ws } = ctx.ws;
const { orderId, taskId, appKey, netMark, type } = ctx.query;
if (!orderId) {
return;
}
if (type === 'query') {
const order = await service.order.getOneByParams({ orderId, taskId });
const status = order.status;
ctx.app.wsMap.set(String(taskId) + orderId, { ws, addTime: new Date().getTime() });
ctx.app.orderIdMap.set(String(taskId) + orderId, {
orderSn: orderId,
addTime: new Date().getTime(),
type: 'ws',
state: 'open',
appKey,
netMark,
});
try {
ws.send('ok');
} catch (err) {
console.log('[err ws send ok]');
}
if (status === 'failed') {
ws.send(JSON.stringify({ errcode: 0, data: { state: -2, result: '任务失败,请稍后重试' } }));
} else if (status === 'success') {
ws.send(JSON.stringify({ errcode: 0, data: { state: 2, result: 'success' } }));
} else {
const result = await service.task.fetchTask({ taskId });
let data,
wsMsg;
switch (result.code) {
case -1:
data = {
status: 'failed',
note: JSON.stringify({ code: 106, message: '任务失败' }),
};
wsMsg = { errcode: 0, data: { state: -2, result: '任务失败,请稍后重试' } };
case 0:
if (new Date().getTime() - order.updated_at > 15 * 60 * 1000) {
data = {
status: 'failed',
note: JSON.stringify({ code: 106, message: '任务超时' }),
};
wsMsg = { errcode: 0, data: { state: -2, result: '任务超时,请稍后重试' } };
}
}
service.order.update(data, { orderId, taskId });
ws.send(JSON.stringify(wsMsg));
}
} else {
ctx.app.wsMap.set(String(taskId) + orderId, { ws, addTime: new Date().getTime() });
ctx.app.orderIdMap.set(String(taskId) + orderId, {
orderSn: orderId,
addTime: new Date().getTime(),
type: 'ws',
state: 'open',
appKey,
netMark,
});
try {
ws.send('ok');
} catch (err) {
console.log('[err ws send ok]');
}
let result = await this.handleCallback();
if (result.errcode !== 2) {
if (ctx.app.wsMap.has(String(taskId) + orderId)) {
result = JSON.stringify(result);
try {
ctx.app.wsMap.get(String(taskId) + orderId).ws.send(result);
} catch (err) {
console.error('[send Err]');
}
} else {
result.addTime = new Date().getTime();
ctx.app.noWsMap.set(String(taskId) + orderId, result);
}
} else {
console.log(result);
}
}
ws.on('message', function(msg) {
// 暂未有用户主动请求情况
console.log(msg);
});
ws.on('close', function() {
// console.log('[thxd]ws连接断开');
if (ctx.app.wsMap.has(String(taskId) + orderId)) {
ctx.app.wsMap.delete(String(taskId) + orderId);
if (ctx.app.orderIdMap.has(String(taskId) + orderId)) {
// console.log('[thxd]修改当前ws为close状态 orderSn: ' + orderIdMap.get(String(req.query.taskId)).orderSn);
ctx.app.orderIdMap.get(String(taskId) + orderId).state = 'close';
}
// console.log('[thxd]ws连接断开');
}
});
}
async fetchCapture() {
const { ctx, service } = this;
const { args, task_id } = ctx.request.body;
......@@ -111,10 +213,10 @@ class TaskController extends Controller {
const { ctx, service } = this;
const { cid } = ctx.request.body;
const data = ctx.app.cityMap.get(cid) || {};
let formHtml = await service.index.getCityHtml(data.queryStepParam[0].loginParam, cid, { name: '', ID: '', password: ''});
let formHtml = await service.index.getCityHtml(data.queryStepParam[0].loginParam, cid, { name: '', ID: '', password: '' });
if (data.state !== 1) {
formHtml = await service.index.getCityHtml(data.queryStepParam[0].loginParam, cid, { name: '', ID: '', password: ''});
formHtml = await service.index.getCityHtml(data.queryStepParam[0].loginParam, cid, { name: '', ID: '', password: '' });
}
ctx.success(formHtml);
}
......@@ -141,7 +243,7 @@ class TaskController extends Controller {
switch (result.code) {
case -1:
service.order.update({
status: 'fail',
status: 'failed',
note: result,
}, { orderId, taskId });
ctx.success({ errcode: 1, data: { state: -1, result: '服务器出错,请稍后重试' } });
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment