Tencent Server Web (TSW) adalah infrastruktur Node.js untuk pengembang front-end web, dengan niat asli untuk meningkatkan efisiensi penentuan posisi masalah, dan memberikan penangkapan paket pewarnaan dan pencatatan holografik . TSW berfokus pada kemampuan pemantauan operasi dan pemeliharaan bisnis, cocok untuk skenario bisnis protokol HTTP dan HTTPS, dan dapat diintegrasikan dengan aplikasi yang ada (KOA dan Express).
TSW 2.0 didasarkan pada 1.0, ditambah dengan model desain modern, menghilangkan banyak sampah di 1.0, dan juga lebih ramah untuk kontainerisasi dan cloud asli. Mencapai akses non-invasif dan berbiaya rendah.
0 intrusi | ?Log holografik | ?Meminta untuk menangkap paket |
|---|---|---|
| Fungsi diimplementasikan melalui Hack NodeJs yang mendasari kode. Menyerang kode bisnis asli 0. | Log holografik tingkat mikroskop dikelompokkan sesuai dengan permintaan pengelompokan, memberikan pengembang pemulihan langsung yang sempurna. | Konten paket lengkap dari semua permintaan yang dikirim oleh sisi server ke luar dapat dirangkak, dan komunikasi dengan latar belakang tidak lagi dapat diakses. |
npm install --save @tswjs/tsw
// yarn add @tswjs/tsw File konfigurasi adalah file konfigurasi yang dimuat ke runtime saat TSW dimulai, terutama mendeklarasikan daftar plug-in yang akan digunakan. Secara default, file tswconfig.js di direktori root proyek akan dimuat, dan jalur file konfigurasi dapat ditentukan secara manual dengan memulai parameter -c atau --config .
Catatan : Tidak ada logika yang terkait dengan integrasi platform terbuka di 2.0, tetapi dienkapsulasi ke dalam plug-in untuk pengguna untuk menggunakan sesuai permintaan. Lihat bab plug-in untuk detailnya.
Contoh File Konfigurasi:
module . exports = {
plugins : [
new MyPlugin ( { } )
]
}Daftar Parameter :
| Nama | Jenis | bawaan | Opsional | Keterangan |
|---|---|---|---|---|
| plugin | Array <lugin> | - | Ya | Daftar Plugin |
| Cleanlog | Boolean | false | Ya | Apakah akan mematikan pencetakan default |
| Loglevel | DEBUG/INFO/WARN/ERROR | DEBUG | Ya | Atur level log |
| WinStontransports | Array <PransportStream> | - | Ya | Saluran Log Winston |
npx @tswjs/tsw ./index.js CATATAN : Parameter CLI asli di node --inspect ./index.js , seperti --inspect , perlu dikonversi menjadi variabel lingkungan NODE_OPTIONS untuk eksekusi, seperti NODE_OPTIONS="--inspect" npx @tswjs/tsw ./index.js .
Gunakan TS : Saat memastikan bahwa proyek memiliki paket ketergantungan TS-simpul, file TS dapat dimuat secara langsung sebagai berikut.
NODE_OPTIONS= " --require=ts-node/register " npx @tswjs/tsw ./index.ts Gunakan npx @tswjs/tsw --help untuk mendapatkan opsi CLI.
Kami menyediakan beberapa proyek sampel untuk mengenal proyek sesegera mungkin.
cd ~git clone https://github.com/Tencent/TSW.gitcd TSWcd examples/koayarnyarn serve atau npm run servecurl -v localhost:4443/path/to/foo -X POST -d "hello, server" Metode implementasi inti dari TSW adalah http.request dan http.createServer NodeJs sendiri untuk mengimplementasikan mekanisme penangkapan paket. Sebelum dan sesudah server memproses permintaan, sebelum dan sesudah server mengirim paket ke server lain, dll., Acara yang sesuai akan dilemparkan untuk pengguna untuk menyesuaikan pemrosesan. Untuk membuatnya lebih nyaman bagi pengguna untuk menggunakan kembali dan menyebarkan kelompok pemrosesan yang disesuaikan, kami mengabstraksi mereka dan membentuk mekanisme plug-in.
export . modules = class MyPlugin ( ) {
constructor ( ) {
this . name = "MyPlugin"
}
async init ( eventBus , config ) {
eventBus . on ( "RESPONSE_CLOSE" , ( payload ) => {
console . log ( payload ) ;
} )
}
} Metode init diperlukan. Metode ini akan dipanggil pada awal pemuatan plug-in, baik sinkron atau asinkron.
eventBus eventBus diperoleh melalui new EventEmitter() . Inti TSW akan memicu peristiwa di atas pada berbagai momen kritis.
| kunci | Artinya (waktu pemicu) | muatan |
|---|---|---|
DNS_LOOKUP_SUCCESS | Dipicu setelah setiap kueri DNS berhasil | string | dns.LookupAddress[] |
DNS_LOOKUP_ERROR | Dipicu setelah setiap kegagalan kueri DNS | NodeJS.ErrorException |
RESPONSE_START | Dipicu setiap kali server mulai mengembalikan respons (jalankan writeHead ) | ResponseEventPayload |
RESPONSE_FINISH | Dipicu di akhir respons ( res.on("finish") ) | ResponseEventPayload |
RESPONSE_CLOSE | Dipicu saat tautan yang mendasarinya ditutup ( res.on("close") ) | ResponseEventPayload |
REQUEST_START | Dipicu setiap kali server menerima permintaan baru | RequestEventPayload |
Secara default, TSW hanya akan merangkak semua log dan konten pengambilan paket dan mengirimkannya ke bus acara untuk konsumsi plug-in. Oleh karena itu, implementasi log dan konten pengambilan paket umumnya mengharuskan pengguna untuk menulis plug-in dan menyediakan penyimpanan sendiri, yang terlalu mahal untuk digunakan.
Oleh karena itu, TSW secara resmi menyediakan platform layanan publik https://tswjs.org, yang memungkinkan pengguna untuk menggunakan TSW dengan biaya rendah, lebih cepat dan lebih nyaman. Untuk detailnya, silakan merujuk ke Pedoman Penggunaan Platform Terbuka.
TSW 2.0 dirancang dalam menghadapi kontainerisasi dan cloud native, jadi tidak ada fungsi terkait cluster bawaan. Disarankan untuk secara langsung menggunakan cek kesehatan kontainer untuk menyelesaikan restart lossless dan restart kesalahan layanan layanan. Untuk skenario di mana skema kontainerisasi tidak digunakan, kami sarankan menggunakan alat serupa PM2 untuk mengimplementasikan mode multi-proses.
// 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 adalah paket log universal dan ringan. winston mendukung beberapa saluran log dan dapat mendefinisikan prioritas log secara terpisah. Selain tiga saluran transmisi log bawaan Console , File , dan HTTP , beberapa modul transmisi juga dipertahankan di luar proyek Winston. Lihat dokumentasi resmi winston .
TSW 2.0 mendukung informasi log menggunakan saluran transmisi winston . Pengguna dapat menambahkan instance winston.transports ke file konfigurasi, dan log akan jatuh ke dalam konfigurasi yang sesuai.
Gunakan winston untuk merekam informasi log di bawah tingkat error dan level debug ke file yang sesuai. File config saat ini dikonfigurasi sebagai berikut:
module . exports = {
winstonTransports : [
new winston . transports . File ( { filename : 'error.log' , level : 'error' } ) ,
new winston . transports . File ( { filename : 'debug.log' , level : 'debug' } )
]
}Logging




























Protokol open source dari Tencent Server Web adalah MIT, lihat lisensi untuk detailnya.