// webSocket服务端 const http = require('http'); const { Server } = require('socket.io'); module.exports = (app) => { // 创建HTTP服务器并监听8010端口 const server = http.createServer(function (req, res) { if (req.url === '/') { res.writeHead(200, {'Content-Type': 'text/plain'}); res.end('Hello World!'); } }).listen(app.config.webSocketServer.port); let io = new Server(server, { cors: { origin: "http://127.0.0.1", // 生产环境应指定具体域名 methods: ["GET", "POST"] }, // path: app.config.webSocketServer.path, transports: ['websocket', 'polling'], connectionStateRecovery: {} }); console.log(`websocket: ${ app.config.webSocketServer.ip }服务器已启动,监听端口:${ app.config.webSocketServer.port }`); const socketEmitter = app.middleware.shunt.socketEmitter(); const utils = app.middleware.utils; io.on('connection', (socket) => { socket.on('message', (cardID) => { if(socketEmitter.listeners(cardID).length !== 0) { socketEmitter.removeAllListeners(cardID); }; socketEmitter.on(cardID, (msg) => { socket.emit(cardID, msg); }); }); }); io.on('error', (err) => { utils.log('../../webSocketLog', err); io = new Server(app.config.webSocketServer.port, { cors: true, connectionStateRecovery: {} }); }); };