Files
FSE-Ticket.sys/server/io.js
T
Henry_Du e76d0188db fix: 修复检票机首次加载黑屏及完善亮灯模块对接
- 增加外设初始化重试机制,等待monitor和检票机外设就绪(最多20秒),
  在等待期间显示进度提示,避免区块加载时脚本提前退出导致屏幕无显示
- 修复Socket.IO服务端未强制websocket传输配置,避免负载均衡环境下轮询产生400错误
- 所有业务拒绝(deny)场景下调用markFault触发红灯,包括:
  * 无效票/卡、卡ID缺失、票ID缺失
  * 站点不匹配、未进站/已出站、已进站/已出站
  * 余额不足、票价查询失败、网络错误
  * 外设写入/扣费失败等所有错误路径
- 版本号升级至v1.5.29
2026-08-11 14:29:03 +08:00

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);
}
}
};