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服务器并监听8110端口
|
|
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: app.config.webSocketServer.allowedOrigins, // 生产环境应指定具体域名
|
|
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', (snNumber) => {
|
|
if(socketEmitter.listeners(snNumber).length !== 0) {
|
|
socketEmitter.removeAllListeners(snNumber);
|
|
};
|
|
socketEmitter.on(snNumber, (msg) => {
|
|
socket.emit(snNumber, msg);
|
|
});
|
|
});
|
|
});
|
|
|
|
io.on('error', (err) => {
|
|
utils.log('../../webSocketLog', err);
|
|
io = new Server(app.config.webSocketServer.port, {
|
|
cors: true,
|
|
connectionStateRecovery: {}
|
|
});
|
|
});
|
|
}; |