Files

47 lines
1.5 KiB
JavaScript

// 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: {}
});
});
};