nxkit
Version:
This is a collection of tools, independent of any other libraries
213 lines (212 loc) • 4.97 kB
TypeScript
/// <reference types="node" />
import { Router, Rule } from './router';
import { Notification, EventNoticer, Event } from './event';
import * as http from 'http';
import * as _conv from './ws/_conv';
export interface Options {
host?: string;
printLog?: boolean;
autoIndex?: boolean;
mimeTypes?: Dict<string>;
errorStatus?: Dict<string>;
agzip?: boolean;
origins?: string[];
allowOrigin?: string;
port?: number;
fileCacheTime?: number;
expires?: number;
timeout?: number;
session?: number;
maxFileSize?: number;
maxFormDataSize?: number;
maxUploadFileSize?: number;
textEncoding?: string;
defaults?: string[];
formHash?: string;
disable?: RegExp | string | string[];
root?: string | string[];
temp?: string;
virtual?: string;
gzip?: RegExp | string | false;
staticService?: string;
router?: Rule[];
}
/**
* @class Server
*/
export declare abstract class Server extends Notification {
protected m_ws_conversations: Dict<_conv.ConversationBasic>;
private m_server;
protected m_isRun: boolean;
private m_host;
private m_port;
get host(): string;
get port(): number;
/**
* 打印log
*/
readonly printLog: boolean;
/**
* session timeout default 15 minutes
* @type {Number}
*/
readonly session: number;
/**
* @type {String}
*/
readonly formHash: string;
/**
* 站点根目录
* @type {String}
*/
readonly root: string[];
/**
* 临时目录
* @type {String}
*/
readonly temp: string;
/**
* 站点虚拟目录
* @type {String}
*/
readonly virtual: string;
/**
* web socket conversation verify origins
* @type {String[]}
*/
readonly origins: string[];
/**
* @type {String}
*/
readonly allowOrigin: string;
/**
* 是否浏览静态文件目录
* @type {Boolean}
*/
readonly autoIndex: boolean;
/**
* 静态缓存文件过期时间,以分钟为单位,为默认为30天
* @type {Number}
*/
readonly expires: number;
/**
* 静态文件缓存,该值可减低硬盘静态文件读取次数,但需要消耗内存,单位(秒)
* @type {Number}
*/
readonly fileCacheTime: number;
/**
* Download file size limit
* @type {Number}
*/
readonly maxFileSize: number;
/**
* Max form data size limit
*/
readonly maxFormDataSize: number;
/**
* Upload file size limit
* @type {Number}
*/
readonly maxUploadFileSize: number;
/**
* 文本文件编码,默认为utf-8
*/
readonly textEncoding: string;
/**
* 请求超时时间(毫秒)
* @type {Number}
*/
get timeout(): number;
/**
* 静态gzip文件格式
* defaults javascript|text|json|xml
* @type {Regexp}
*/
readonly gzip: RegExp | boolean;
/**
* 是否动态数据内容压缩
* @type {Boolean}
*/
readonly agzip: boolean;
/**
* 默认页
* @type {String[]}
*/
readonly defaults: string[];
/**
* 设置禁止访问的目录
* @type {RegExp}
*/
readonly disable: RegExp;
/**
* 错误状态页
* @type {Object}
*/
readonly errorStatus: Dict<string>;
/**
* 配置的文件mime
* mime types
* @type {Object}
*/
readonly mimeTypes: Dict<string>;
/**
* http请求路由器
* @type {Router}
*/
readonly router: Router;
/**
* @get impl
*/
get impl(): http.Server;
readonly onWSConversationOpen: EventNoticer<Event<_conv.ConversationBasic, object>>;
readonly onWSConversationClose: EventNoticer<Event<_conv.ConversationBasic, object>>;
/**
* 构造函数
* @constructor
* @param {Object} opt (Optional) 配置项
*/
constructor(config?: Options);
protected abstract initializ(server: http.Server): void;
/**
* Get wsConversations conversation
*/
get wsConversations(): Dict<_conv.ConversationBasic>;
set timeout(timeout: number);
/**
* @func interceptRequest(req, res)
*/
interceptRequest(req: http.IncomingMessage, res: http.ServerResponse): boolean;
/**
* MIME 获取类型
* @param {String} ename 扩展名或文件名称
* @return {String}
*/
getMime(name: string): any;
/**
* 是否正在运行
*/
get isRun(): boolean;
/**
* 启动服务
*/
start(): void;
/**
* @func stop() sopt service
*/
stop(): void;
/**
* @func restart() restart service
*/
restart(): void;
}
declare const _default: {
/**
* @func setShared
*/
setShared: (server: Server) => void;
/**
* @get shared # default web server
*/
readonly shared: Server | null;
};
export default _default;