47 lines
1.5 KiB
JavaScript
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: {}
|
||
|
|
});
|
||
|
|
});
|
||
|
|
};
|