Tencent Server Web (TSW) es una infraestructura Node.js para desarrolladores de front-end web, con la intención original de mejorar la eficiencia de posicionamiento de problemas, y proporciona captura de paquetes de teñido y registro holográfico . TSW se centra en las capacidades de monitoreo de operación y mantenimiento del negocio, adecuado para escenarios comerciales de protocolos HTTP y HTTPS, y puede integrarse sin problemas con las aplicaciones existentes (KOA y Express).
TSW 2.0 se basa en 1.0, complementado por un modelo de diseño moderno, eliminando una gran cantidad de escoria en 1.0, y también es más amigable para la contenedores y las nativas de la nube. Lograr un acceso no invasivo y de bajo costo.
0 intrusión | ?Log holográfico | ?Solicitar para atrapar el paquete |
|---|---|---|
| Las funciones se implementan a través del código subyacente de Hack NodeJS. Invade el código de negocio original 0. | El registro holográfico a nivel de microscopio se agrupó de acuerdo con la agrupación de solicitudes, brindando a los desarrolladores una restauración en vivo perfecta. | El contenido completo del paquete de todas las solicitudes enviadas por el lado del servidor al exterior se puede rastrear, y ya no es accesible la comunicación con el fondo. |
npm install --save @tswjs/tsw
// yarn add @tswjs/tsw El archivo de configuración es un archivo de configuración cargado en el tiempo de ejecución cuando se inicia TSW, declarando principalmente una lista de complementos para usar. De manera predeterminada, se cargará el archivo tswconfig.js en el directorio raíz del proyecto, y la ruta del archivo de configuración se puede especificar manualmente mediante los parámetros iniciales -c o --config .
Nota : No hay lógica relacionada con la integración de la plataforma Open en 2.0, pero está encapsulado en un complemento para que los usuarios lo usen a pedido. Consulte el capítulo de complemento para más detalles.
Ejemplo de archivo de configuración:
module . exports = {
plugins : [
new MyPlugin ( { } )
]
}Lista de parámetros :
| Nombre | Tipo | por defecto | Opcional | Descripción |
|---|---|---|---|---|
| complementos | Array <Clugin> | - | Sí | Lista de complementos |
| cleanlog | booleano | false | Sí | Si desactivar la impresión predeterminada |
| Loglevel | DEBUG/INFO/WARN/ERROR | DEBUG | Sí | Establecer el nivel de registro |
| Winstontransports | Matray <Stransportstream> | - | Sí | Canal de registro de Winston |
npx @tswjs/tsw ./index.js Nota : Los parámetros de CLI originales en node --inspect ./index.js , como --inspect , deben convertirse en la variable de entorno NODE_OPTIONS para la ejecución, como NODE_OPTIONS="--inspect" npx @tswjs/tsw ./index.js .
Use TS : al garantizar que el proyecto tenga un paquete de dependencia de nodo TS, el archivo TS se puede cargar directamente de la siguiente manera.
NODE_OPTIONS= " --require=ts-node/register " npx @tswjs/tsw ./index.ts Use npx @tswjs/tsw --help para obtener la opción CLI.
Proporcionamos algunos proyectos de muestra para conocer el proyecto lo antes posible.
cd ~git clone https://github.com/Tencent/TSW.gitcd TSWcd examples/koayarnyarn serve o npm run servecurl -v localhost:4443/path/to/foo -X POST -d "hello, server" El método de implementación central de TSW es el propio http.request y http.createServer de Hack NodeJS para implementar el mecanismo de captura de paquetes. Antes y después del servidor procesa la solicitud, antes y después del servidor envía paquetes a otros servidores, etc., se lanzarán eventos correspondientes para que los usuarios personalicen el procesamiento. Para que sea más conveniente para los usuarios reutilizar y propagar tales grupos de procesamiento personalizado, los abstraimos y formamos un mecanismo de enchufe.
export . modules = class MyPlugin ( ) {
constructor ( ) {
this . name = "MyPlugin"
}
async init ( eventBus , config ) {
eventBus . on ( "RESPONSE_CLOSE" , ( payload ) => {
console . log ( payload ) ;
} )
}
} init es necesario. Este método se llamará al comienzo de la carga del complemento, ya sea sincrónico o asincrónico.
eventBus eventBus se obtiene a través de new EventEmitter() . El núcleo TSW activará los eventos anteriores en varios momentos críticos.
| llave | Significado (tiempo de activación) | carga útil |
|---|---|---|
DNS_LOOKUP_SUCCESS | Activado después de que cada consulta DNS sea exitosa | string | dns.LookupAddress[] |
DNS_LOOKUP_ERROR | Activado después de cada falla de consulta DNS | NodeJS.ErrorException |
RESPONSE_START | Activado cada vez que el servidor comienza a devolver una respuesta (ejecute writeHead ) | ResponseEventPayload |
RESPONSE_FINISH | Activado al final de la respuesta ( res.on("finish") ) | ResponseEventPayload |
RESPONSE_CLOSE | Activado cuando el enlace subyacente está cerrado ( res.on("close") ) | ResponseEventPayload |
REQUEST_START | Activado cada vez que el servidor recibe una nueva solicitud | RequestEventPayload |
Por defecto, TSW simplemente arrastrará todos los registros y contenido de captura de paquetes y los enviará al bus de eventos para el consumo de complemento. Por lo tanto, la implementación de registros y contenido de captura de paquetes generalmente requiere que los usuarios escriban complementos y proporcionen almacenamiento por sí mismos, lo cual es demasiado costoso de usar.
Por lo tanto, TSW proporciona oficialmente una plataforma de servicio público https://tswjs.org, lo que permite a los usuarios usar TSW a un nivel de bajo costo, más rápido y más conveniente. Para más detalles, consulte las pautas de uso de la plataforma abierta.
TSW 2.0 está diseñado frente a la contenedorización y la natividad de la nube, por lo que no hay funciones relacionadas con el clúster incorporadas. Se recomienda utilizar directamente las verificaciones de salud del contenedor para completar el mecanismo de reinicio sin pérdidas y reinicio de fallas del servicio. Para escenarios en los que no se utilizan esquemas de contenedorización, recomendamos usar herramientas similares de PM2 para implementar el modo de procesamiento múltiple.
// 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 es un paquete de registro universal y liviano. winston admite múltiples canales de registro y puede definir prioridades de registro por separado. Además de las tres Console de canales de transmisión de registro, File y HTTP incorporados, algunos módulos de transmisión también se mantienen fuera del proyecto Winston. Mira la documentación oficial winston .
TSW 2.0 admite información de registro utilizando el canal de transmisión winston . Los usuarios pueden agregar instancias winston.transports al archivo de configuración, y los registros caerán en la configuración correspondiente.
Use winston para registrar la información del registro por debajo error y el nivel debug al archivo correspondiente. El archivo config actual está configurado de la siguiente manera:
module . exports = {
winstonTransports : [
new winston . transports . File ( { filename : 'error.log' , level : 'error' } ) ,
new winston . transports . File ( { filename : 'debug.log' , level : 'debug' } )
]
}Explotación florestal




























El protocolo de código abierto de Tencent Server Web es MIT, consulte la licencia para más detalles.