A Tencent Server Web (TSW) é uma infraestrutura de node.js para desenvolvedores de front-end da Web, com a intenção original de melhorar a eficiência do posicionamento do problema, e fornece captura de pacotes de tingimento e extração holográfica . A TSW concentra -se nos recursos de monitoramento de operação e manutenção dos negócios, adequados para cenários de negócios dos protocolos HTTP e HTTPS, e podem ser perfeitamente integrados aos aplicativos existentes (KOA e Express).
O TSW 2.0 é baseado em 1.0, suplementado por um modelo de design moderno, removendo muito escorto em 1.0 e também é mais amigável para a contêinerização e a nuvem nativa. Obter acesso não invasivo e de baixo custo.
0 intrusão | ?Log holográfico | ?Solicitação para pegar o pacote |
|---|---|---|
| As funções são implementadas por meio do código de hackejs subjacente. Invade o código comercial original 0. | O log holográfico no nível do microscópio agrupou-se de acordo com o agrupamento de solicitações, dando aos desenvolvedores uma restauração ao vivo perfeita. | O conteúdo completo do pacote de todas as solicitações enviadas pelo lado do servidor para o exterior pode ser rasteado e a comunicação com o plano de fundo não é mais acessível. |
npm install --save @tswjs/tsw
// yarn add @tswjs/tsw O arquivo de configuração é um arquivo de configuração carregado no tempo de execução quando o TSW é iniciado, declarando principalmente uma lista de plug-ins para usar. Por padrão, o arquivo tswconfig.js no diretório raiz do projeto será carregado e o caminho do arquivo de configuração pode ser especificado manualmente pelos parâmetros de partida -c ou --config .
Nota : Não há lógica relacionada à integração da plataforma aberta no 2.0, mas é encapsulada em um plug-in para os usuários usarem sob demanda. Veja o capítulo plug-in para obter detalhes.
Exemplo de arquivo de configuração:
module . exports = {
plugins : [
new MyPlugin ( { } )
]
}Lista de parâmetros :
| Nome | Tipo | padrão | Opcional | Descrição |
|---|---|---|---|---|
| plugins | Array <lugin> | - | sim | Lista de plugins |
| Cleanlog | booleano | false | sim | Se você deve desativar a impressão padrão |
| Loglevel | DEBUG/INFO/WARN/ERROR | DEBUG | sim | Defina o nível de log |
| Winstontransports | Array <AlputStream> | - | sim | Winston Log Channel |
npx @tswjs/tsw ./index.js NOTA : Os parâmetros originais da CLI no node --inspect ./index.js , como --inspect , precisam ser convertidos na variável de ambiente NODE_OPTIONS para execução, como NODE_OPTIONS="--inspect" npx @tswjs/tsw ./index.js .
Use TS : ao garantir que o projeto tenha um pacote de dependência de nó TS, o arquivo TS pode ser carregado diretamente da seguinte maneira.
NODE_OPTIONS= " --require=ts-node/register " npx @tswjs/tsw ./index.ts Use npx @tswjs/tsw --help para obter a opção CLI.
Fornecemos alguns projetos de amostra para conhecer o projeto o mais rápido possível.
cd ~git clone https://github.com/Tencent/TSW.gitcd TSWcd examples/koayarnyarn serve OU npm run servecurl -v localhost:4443/path/to/foo -X POST -d "hello, server" O método principal de implementação do TSW é o http.request e http.createServer da Hack Nodejs para implementar o mecanismo de captura de pacotes. Antes e depois do servidor processa a solicitação, antes e depois que o servidor envie pacotes para outros servidores, etc., os eventos correspondentes serão lançados para os usuários personalizarem o processamento. Para tornar mais conveniente para os usuários reutilizarem e propagar esses grupos de processamento personalizado, abstraçamos e formamos um mecanismo de plug-in.
export . modules = class MyPlugin ( ) {
constructor ( ) {
this . name = "MyPlugin"
}
async init ( eventBus , config ) {
eventBus . on ( "RESPONSE_CLOSE" , ( payload ) => {
console . log ( payload ) ;
} )
}
} init é necessário. Este método será chamado no início do carregamento do plug-in, síncrono ou assíncrono.
eventBus eventBus é obtido através do new EventEmitter() . O núcleo do TSW desencadeará os eventos acima em vários momentos críticos.
| chave | Significado (tempo de gatilho) | carga útil |
|---|---|---|
DNS_LOOKUP_SUCCESS | Acionado depois que cada consulta do DNS é bem -sucedida | string | dns.LookupAddress[] |
DNS_LOOKUP_ERROR | Acionado após cada falha de consulta do DNS | NodeJS.ErrorException |
RESPONSE_START | Acionado toda vez que o servidor começa a retornar uma resposta (execute writeHead ) | ResponseEventPayload |
RESPONSE_FINISH | Acionado no final da resposta ( res.on("finish") ) | ResponseEventPayload |
RESPONSE_CLOSE | Acionado quando o link subjacente é fechado ( res.on("close") )) | ResponseEventPayload |
REQUEST_START | Acionado toda vez que o servidor recebe uma nova solicitação | RequestEventPayload |
Por padrão, o TSW apenas rasteja todos os logs e captura de conteúdo de captura de pacotes e os enviará para o barramento de eventos para consumo de plug-in. Portanto, a implementação de logs e conteúdo de captura de pacotes geralmente exige que os usuários escrevam plug-ins e forneçam armazenamento por si mesmos, o que é muito caro de usar.
Portanto, o TSW fornece oficialmente uma plataforma de serviço público https://tswjs.org, permitindo que os usuários usem o TSW a um nível de baixo custo, mais rápido e mais conveniente. Para detalhes, consulte as diretrizes de uso da plataforma aberta.
O TSW 2.0 foi projetado diante da contêinerização e da natividade da nuvem, para que não haja funções relacionadas ao cluster interno. Recomenda -se usar diretamente as verificações de saúde do contêiner para concluir o mecanismo de reinicialização e reinicialização de falhas sem perdas do serviço. Para cenários em que os esquemas de contêiner não são usados, recomendamos o uso de ferramentas semelhantes PM2 para implementar o modo multipocess.
// ecosystem.config.json
{
"apps" : [
{
"name" : "app-name" ,
"script" : "built/index.js" ,
"interpreter" : "node" ,
"interpreter_args" : "./node_modules/@tswjs/tsw/dist/cli.js" ,
// other options
}
]
} // package.json
{
...
"scripts" : {
"start" : "pm2 start ecosystem.config.json"
} ,
...
} winston é um pacote de log universal e leve. winston suporta vários canais de log e pode definir prioridades de log separadamente. Além dos três canais de transmissão de log embutidos, Console , File e HTTP , alguns módulos de transmissão também são mantidos fora do projeto Winston. Confira a documentação oficial winston .
O TSW 2.0 suporta informações de log usando o canal de transmissão winston . Os usuários podem adicionar instâncias winston.transports ao arquivo de configuração e os logs cairão na configuração correspondente.
Use winston para registrar informações de log abaixo error e do nível debug no arquivo correspondente. O arquivo config atual é configurado da seguinte forma:
module . exports = {
winstonTransports : [
new winston . transports . File ( { filename : 'error.log' , level : 'error' } ) ,
new winston . transports . File ( { filename : 'debug.log' , level : 'debug' } )
]
}Log




























O protocolo de código aberto da tencent Server Web é o MIT, consulte a licença para obter detalhes.