mm_connector
Version:
这是超级美眉游戏连接器,用于连接客户端和服务端,实现前后端安全通讯。
67 lines (60 loc) • 1.5 kB
JavaScript
const xmlParser = require("mm_xml");
const session = require('mm_session');
const compress = require('koa-compress');
const koaBody = require('koa-body');
const send = require('koa-send');
/**
* 应用
* @param {Object} server 服务
* @param {Object} config 配置参数
*/
module.exports = function(server, config) {
/**
* 发送文件
*/
server.use(async(ctx, next) => {
ctx.send = async function(src){
await send(ctx, src);
}
await next();
});
// 设置session 保存时长2小时
server.use(session({
maxAge: 7200
}));
// 使用压缩
if (config.compress) {
server.use(
compress({
filter: function(content_type) {
// 只有在请求的content-type中有gzip类型,我们才会考虑压缩,因为zlib是压缩成gzip类型的
return /text/i.test(content_type);
},
// 阀值,当数据超过1kb的时候,可以压缩
threshold: 1024,
// zlib是node的压缩模块
flush: require('zlib').Z_SYNC_FLUSH
})
);
}
// 解析 text/xml
server.use(xmlParser());
var func = koaBody({
multipart: true,
formidable: {
// 设置上传文件大小最大限制,默认20M
maxFileSize: 2000 * 1024 * 1024
}
});
// 解析 application/json、application/x-www-form-urlencoded、text/plain
// 接收主体
server.use(async(ctx, next) => {
if(!ctx.request.body){
await func(ctx, next);
}
else {
await next();
}
});
return server;
};