- 增加外设初始化重试机制,等待monitor和检票机外设就绪(最多20秒), 在等待期间显示进度提示,避免区块加载时脚本提前退出导致屏幕无显示 - 修复Socket.IO服务端未强制websocket传输配置,避免负载均衡环境下轮询产生400错误 - 所有业务拒绝(deny)场景下调用markFault触发红灯,包括: * 无效票/卡、卡ID缺失、票ID缺失 * 站点不匹配、未进站/已出站、已进站/已出站 * 余额不足、票价查询失败、网络错误 * 外设写入/扣费失败等所有错误路径 - 版本号升级至v1.5.29
52 lines
1.2 KiB
JavaScript
52 lines
1.2 KiB
JavaScript
let io = null;
|
|
|
|
module.exports = {
|
|
init: (httpServer) => {
|
|
io = require('socket.io')(httpServer, {
|
|
cors: {
|
|
origin: "*",
|
|
methods: ["GET", "POST"]
|
|
},
|
|
transports: ['websocket']
|
|
});
|
|
|
|
io.engine.on('connection_error', (err) => {
|
|
try {
|
|
const ctx = err && err.context ? err.context : null;
|
|
const req = ctx && ctx.req ? ctx.req : null;
|
|
const headers = req && req.headers ? req.headers : {};
|
|
console.log('Socket connection error:', {
|
|
code: err && err.code,
|
|
message: err && err.message,
|
|
url: req && req.url,
|
|
transport: ctx && ctx.transport,
|
|
host: headers && headers.host,
|
|
origin: headers && headers.origin
|
|
});
|
|
} catch (e) {
|
|
console.log('Socket connection error');
|
|
}
|
|
});
|
|
|
|
io.on('connection', (socket) => {
|
|
console.log('Client connected:', socket.id);
|
|
socket.on('disconnect', () => {
|
|
console.log('Client disconnected:', socket.id);
|
|
});
|
|
});
|
|
|
|
return io;
|
|
},
|
|
getIO: () => {
|
|
if (!io) {
|
|
throw new Error("Socket.io not initialized!");
|
|
}
|
|
return io;
|
|
},
|
|
emit: (event, data) => {
|
|
if (io) {
|
|
io.emit(event, data);
|
|
}
|
|
}
|
|
};
|