You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
125 lines
3.5 KiB
125 lines
3.5 KiB
// 简化的客服在线状态测试脚本
|
|
const WebSocket = require('ws');
|
|
const http = require('http');
|
|
|
|
// 服务器地址
|
|
const SERVER_URL = 'ws://localhost:3003';
|
|
const API_URL = 'http://localhost:3003/api/managers';
|
|
|
|
// 客服信息
|
|
const customerServicePhone = '17780155537';
|
|
const customerServiceId = '22'; // 刘杨的ID
|
|
|
|
console.log('=== 简化的客服在线状态测试 ===');
|
|
console.log(`测试客服ID: ${customerServiceId}`);
|
|
|
|
// 检查客服当前状态
|
|
function checkStatus() {
|
|
return new Promise((resolve, reject) => {
|
|
http.get(API_URL, (res) => {
|
|
let data = '';
|
|
res.on('data', chunk => data += chunk);
|
|
res.on('end', () => {
|
|
try {
|
|
const result = JSON.parse(data);
|
|
const manager = result.data.find(m => m.managerId === customerServiceId);
|
|
if (manager) {
|
|
console.log(`客服状态: ${manager.online ? '✅ 在线' : '❌ 离线'}`);
|
|
resolve(manager.online);
|
|
} else {
|
|
console.log('未找到客服信息');
|
|
resolve(false);
|
|
}
|
|
} catch (e) {
|
|
reject(e);
|
|
}
|
|
});
|
|
}).on('error', reject);
|
|
});
|
|
}
|
|
|
|
// 使用基础认证格式(与诊断脚本中成功的格式一致)
|
|
function testSimpleAuth() {
|
|
return new Promise((resolve, reject) => {
|
|
console.log('\n--- 使用基础认证格式 ---');
|
|
const ws = new WebSocket(SERVER_URL);
|
|
|
|
ws.on('open', () => {
|
|
console.log('连接已建立');
|
|
// 使用最简单的认证格式
|
|
const authMessage = {
|
|
managerId: customerServiceId,
|
|
type: 'manager'
|
|
};
|
|
console.log('发送认证:', JSON.stringify(authMessage));
|
|
ws.send(JSON.stringify(authMessage));
|
|
});
|
|
|
|
ws.on('message', (data) => {
|
|
const msg = JSON.parse(data);
|
|
console.log('收到响应:', msg);
|
|
if (msg.type === 'auth_success') {
|
|
console.log('✅ 认证成功!');
|
|
resolve({ success: true, ws });
|
|
} else {
|
|
console.log('❌ 认证失败');
|
|
ws.close();
|
|
resolve({ success: false });
|
|
}
|
|
});
|
|
|
|
ws.on('error', (e) => {
|
|
console.log('连接错误:', e.message);
|
|
resolve({ success: false });
|
|
});
|
|
|
|
setTimeout(() => {
|
|
console.log('连接超时');
|
|
ws.close();
|
|
resolve({ success: false });
|
|
}, 5000);
|
|
});
|
|
}
|
|
|
|
// 主函数
|
|
async function runTest() {
|
|
try {
|
|
// 1. 检查初始状态
|
|
console.log('\n1. 检查初始状态:');
|
|
await checkStatus();
|
|
|
|
// 2. 尝试认证
|
|
console.log('\n2. 尝试WebSocket认证:');
|
|
const authResult = await testSimpleAuth();
|
|
|
|
if (authResult.success) {
|
|
// 3. 等待3秒后再次检查状态
|
|
console.log('\n3. 等待并检查更新后的状态...');
|
|
setTimeout(async () => {
|
|
const newStatus = await checkStatus();
|
|
|
|
console.log('\n=== 测试结果 ===');
|
|
if (newStatus) {
|
|
console.log('🎉 成功!客服状态已更新为在线');
|
|
} else {
|
|
console.log('❌ 失败!客服仍显示离线');
|
|
}
|
|
|
|
// 保持连接15秒
|
|
console.log('\n保持连接15秒,请在前端查看状态...');
|
|
setTimeout(() => {
|
|
authResult.ws.close();
|
|
console.log('\n测试完成!');
|
|
}, 15000);
|
|
}, 3000);
|
|
} else {
|
|
console.log('\n=== 测试结果 ===');
|
|
console.log('❌ 认证失败,请检查认证格式或服务器配置');
|
|
}
|
|
|
|
} catch (error) {
|
|
console.error('测试过程中出错:', error);
|
|
}
|
|
}
|
|
|
|
runTest();
|