Tencent Server Web (TSW) est une infrastructure Node.js pour les développeurs Front-end, avec l'intention d'origine d'améliorer l'efficacité de positionnement des problèmes, et fournit une capture de paquets de teinture et une journalisation holographique . TSW se concentre sur les capacités de surveillance de l'exploitation et de la maintenance de l'entreprise, adaptées aux scénarios commerciaux des protocoles HTTP et HTTPS, et peut être intégré de manière transparente aux applications existantes (KOA et Express).
TSW 2.0 est basé sur 1.0, complété par un modèle de conception moderne, supprimant beaucoup de scories en 1.0, et est également plus amical pour la conteneurisation et le natif du cloud. Atteindre un accès non invasif et à faible coût.
0 intrusion | ?Journal holographique | ?Demande d'attraper le paquet |
|---|---|---|
| Les fonctions sont implémentées via le code sous-jacent de piratage NodeJS. Envahir le code commercial d'origine 0. | Le journal holographique au niveau du microscope s'est regroupé en fonction du clustering de demande, donnant aux développeurs une restauration en direct parfaite. | Le contenu complet du package de toutes les demandes envoyés par le côté serveur à l'extérieur peut être rampé, et la communication avec l'arrière-plan n'est plus accessible. |
npm install --save @tswjs/tsw
// yarn add @tswjs/tsw Le fichier de configuration est un fichier de configuration chargé dans l'exécution lorsque TSW est démarré, déclarant principalement une liste de plug-ins à utiliser. Par défaut, le fichier tswconfig.js dans le répertoire racine du projet sera chargé, et le chemin du fichier de configuration peut être spécifié manuellement par paramètres de démarrage -c ou --config .
Remarque : il n'y a pas de logique liée à l'intégration de la plate-forme ouverte dans 2.0, mais il est encapsulé dans un plug-in pour les utilisateurs à utiliser sur la demande. Voir le chapitre Plug-In pour plus de détails.
Exemple de fichier de configuration:
module . exports = {
plugins : [
new MyPlugin ( { } )
]
}Liste des paramètres :
| Nom | Taper | défaut | Facultatif | Description |
|---|---|---|---|---|
| plugins | Array <Glugin> | - | Oui | Liste des plugins |
| nettoyer de nettoyage | booléen | false | Oui | S'il faut désactiver l'impression par défaut |
| logevel | DEBUG/INFO/WARN/ERROR | DEBUG | Oui | Définir le niveau du journal |
| WinstontorTransports | Array <portstrstream> | - | Oui | Chaîne de journal Winston |
npx @tswjs/tsw ./index.js Remarque : Les paramètres CLI d'origine dans node --inspect ./index.js , tels que --inspect , doivent être convertis en variable d'environnement NODE_OPTIONS pour l'exécution, tels que NODE_OPTIONS="--inspect" npx @tswjs/tsw ./index.js .
Utilisez TS : Lorsque le projet a un package de dépendance à nœuds TS, le fichier TS peut être chargé directement comme suit.
NODE_OPTIONS= " --require=ts-node/register " npx @tswjs/tsw ./index.ts Utilisez npx @tswjs/tsw --help pour obtenir l'option CLI.
Nous fournissons quelques exemples de projets pour connaître le projet dès que possible.
cd ~git clone https://github.com/Tencent/TSW.gitcd TSWcd examples/koayarnyarn serve ou la npm run servecurl -v localhost:4443/path/to/foo -X POST -d "hello, server" La méthode de mise en œuvre principale de TSW est Hack Nodejs http.request et http.createServer de Nodejs pour implémenter le mécanisme de capture de paquets. Avant et après le serveur traite la demande, avant et après le serveur envoie des paquets à d'autres serveurs, etc., des événements correspondants seront lancés pour que les utilisateurs personnalisent le traitement. Afin de rendre plus pratique pour les utilisateurs de réutiliser et de propager de tels groupes de traitement personnalisé, nous les avons résumées et formés un mécanisme de plug-in.
export . modules = class MyPlugin ( ) {
constructor ( ) {
this . name = "MyPlugin"
}
async init ( eventBus , config ) {
eventBus . on ( "RESPONSE_CLOSE" , ( payload ) => {
console . log ( payload ) ;
} )
}
} init est nécessaire. Cette méthode sera appelée au début du chargement du plug-in, synchrone ou asynchrone.
eventBus eventBus est obtenu via new EventEmitter() . Le noyau TSW déclenchera les événements ci-dessus à divers moments critiques.
| clé | Signification (timing de déclenchement) | charge utile |
|---|---|---|
DNS_LOOKUP_SUCCESS | Déclenché après que chaque requête DNS réussisse | string | dns.LookupAddress[] |
DNS_LOOKUP_ERROR | Déclenché après chaque défaillance de la requête DNS | NodeJS.ErrorException |
RESPONSE_START | Déclenché chaque fois que le serveur commence à renvoyer une réponse (exécuter writeHead ) | ResponseEventPayload |
RESPONSE_FINISH | Déclenché à la fin de la réponse ( res.on("finish") ) | ResponseEventPayload |
RESPONSE_CLOSE | Déclenché lorsque le lien sous-jacent est fermé ( res.on("close") ) | ResponseEventPayload |
REQUEST_START | Déclenché chaque fois que le serveur reçoit une nouvelle demande | RequestEventPayload |
Par défaut, TSW va simplement explorer tous les journaux et contenu de capture de paquets et les envoyer dans le bus d'événements pour la consommation de plug-in. Par conséquent, la mise en œuvre des journaux et du contenu de capture de paquets oblige généralement les utilisateurs à écrire des plug-ins et à fournir un stockage par eux-mêmes, ce qui est trop coûteux à utiliser.
Par conséquent, TSW fournit officiellement une plate-forme de service public https://tswjs.org, permettant aux utilisateurs d'utiliser TSW à un niveau à faible coût, plus rapide et plus pratique. Pour plus de détails, veuillez vous référer aux directives d'utilisation de la plate-forme ouverte.
TSW 2.0 est conçu face à la contenerisation et à la nativité des nuages, il n'y a donc pas de fonctions liées à la cluster intégrées. Il est recommandé d'utiliser directement les contrôles de santé des conteneurs pour compléter le mécanisme de redémarrage sans perte et de redémarrage des défauts du service. Pour les scénarios où les schémas de contenerisation ne sont pas utilisés, nous recommandons d'utiliser des outils similaires PM2 pour implémenter le mode multi-processus.
// 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 est un ensemble de journaux universels et légers. winston prend en charge plusieurs canaux de journal et peut définir séparément les priorités du journal. En plus des trois canaux de transmission de journaux intégrés Console , File et HTTP , certains modules de transmission sont également maintenus en dehors du projet Winston. Consultez la documentation officielle winston .
TSW 2.0 prend en charge les informations de journal à l'aide du canal de transmission winston . Les utilisateurs peuvent ajouter des instances winston.transports au fichier de configuration, et les journaux tomberont dans la configuration correspondante.
Utilisez winston pour enregistrer les informations du journal sous error et le niveau debug au fichier correspondant. Le fichier config actuel est configuré comme suit:
module . exports = {
winstonTransports : [
new winston . transports . File ( { filename : 'error.log' , level : 'error' } ) ,
new winston . transports . File ( { filename : 'debug.log' , level : 'debug' } )
]
}Enregistrement




























Le protocole open source de Tencent Server Web est le MIT, voir la licence pour plus de détails.