Tencent Server Web (TSW) เป็นโครงสร้างพื้นฐานของ Node.js สำหรับนักพัฒนาส่วนหน้าเว็บด้วยความตั้งใจดั้งเดิมในการปรับปรุงประสิทธิภาพการวางตำแหน่งปัญหาและให้ การจับแพ็คเก็ตสีย้อม และ การบันทึกโฮโลแกรม TSW มุ่งเน้นไปที่ความสามารถในการตรวจสอบการดำเนินงานและการบำรุงรักษาของธุรกิจเหมาะสำหรับสถานการณ์ทางธุรกิจของโปรโตคอล HTTP และ HTTPS และสามารถรวมเข้ากับแอปพลิเคชันที่มีอยู่ได้อย่างราบรื่น (KOA และ Express)
TSW 2.0 ขึ้นอยู่กับ 1.0 ซึ่งเสริมด้วยรูปแบบการออกแบบที่ทันสมัยลบการหยดน้ำจำนวนมากใน 1.0 และยังเป็นมิตรกับการบรรจุและคลาวด์พื้นเมือง บรรลุการเข้าถึงที่ไม่รุกรานและมีราคาต่ำ
0 การบุกรุก | -บันทึกโฮโลแกรม | -ขอให้จับแพ็คเก็ต |
|---|---|---|
| ฟังก์ชั่นจะถูกนำไปใช้ผ่านรหัสพื้นฐานแฮ็ค บุกรุกรหัสธุรกิจดั้งเดิม 0 | บันทึกโฮโลแกรมระดับกล้องจุลทรรศน์แบบคลัสเตอร์ตามการจัดกลุ่มคำขอทำให้นักพัฒนาได้รับการฟื้นฟูสดที่สมบูรณ์แบบ | เนื้อหาแพ็คเกจที่สมบูรณ์ของคำขอทั้งหมดที่ส่งโดยฝั่งเซิร์ฟเวอร์ไปด้านนอกสามารถรวบรวมข้อมูลได้และการสื่อสารที่มีพื้นหลังไม่สามารถเข้าถึงได้อีกต่อไป |
npm install --save @tswjs/tsw
// yarn add @tswjs/tsw ไฟล์การกำหนดค่าเป็นไฟล์การกำหนดค่าที่โหลดลงในรันไทม์เมื่อเริ่มต้น TSW ส่วนใหญ่จะประกาศรายการปลั๊กอินที่จะใช้ โดยค่าเริ่มต้นไฟล์ tswconfig.js ในไดเรกทอรีรูทของโครงการจะถูกโหลดและเส้นทางไฟล์การกำหนดค่าสามารถระบุได้ด้วยตนเองโดยการเริ่มต้นพารามิเตอร์ -c หรือ --config
หมายเหตุ : ไม่มีตรรกะที่เกี่ยวข้องกับการรวมแพลตฟอร์มเปิดใน 2.0 แต่ถูกห่อหุ้มไว้ในปลั๊กอินเพื่อให้ผู้ใช้ใช้ตามความต้องการ ดูบทปลั๊กอินสำหรับรายละเอียด
ตัวอย่างไฟล์กำหนดค่า:
module . exports = {
plugins : [
new MyPlugin ( { } )
]
}รายการพารามิเตอร์ :
| ชื่อ | พิมพ์ | ค่าเริ่มต้น | ไม่จำเป็น | คำอธิบาย |
|---|---|---|---|---|
| ปลั๊กอิน | อาร์เรย์ <ปลั๊กอิน> | - | ใช่ | รายการปลั๊กอิน |
| ทำความสะอาด | บูลีน | false | ใช่ | ไม่ว่าจะปิดการพิมพ์เริ่มต้น |
| เล็ง | DEBUG/INFO/WARN/ERROR | DEBUG | ใช่ | ตั้งค่าระดับบันทึก |
| Winstontransports | อาร์เรย์ <PressionStream> | - | ใช่ | ช่อง Winston Log |
npx @tswjs/tsw ./index.js หมายเหตุ : พารามิเตอร์ CLI ดั้งเดิมใน node --inspect ./index.js เช่น --inspect จำเป็นต้องถูกแปลงเป็นตัวแปรสภาพแวดล้อม NODE_OPTIONS สำหรับการดำเนินการเช่น NODE_OPTIONS="--inspect" npx @tswjs/tsw ./index.js
ใช้ TS : เมื่อตรวจสอบให้แน่ใจว่าโครงการมีแพ็คเกจการพึ่งพา TS-Node ไฟล์ TS สามารถโหลดได้โดยตรงดังนี้
NODE_OPTIONS= " --require=ts-node/register " npx @tswjs/tsw ./index.ts ใช้ npx @tswjs/tsw --help เพื่อรับตัวเลือก CLI
เราจัดทำโครงการตัวอย่างเพื่อทำความรู้จักกับโครงการโดยเร็วที่สุด
cd ~git clone https://github.com/Tencent/TSW.gitcd TSWcd examples/koayarnyarn serve หรือ npm run servecurl -v localhost:4443/path/to/foo -X POST -d "hello, server" วิธีการใช้งานหลักของ TSW คือ HACK http.request และ http.createServer ของ NodeJS เพื่อใช้กลไกการจับแพ็คเก็ต ก่อนและหลังเซิร์ฟเวอร์จะประมวลผลคำขอก่อนและหลังเซิร์ฟเวอร์จะส่งแพ็กเก็ตไปยังเซิร์ฟเวอร์อื่น ฯลฯ เหตุการณ์ที่เกี่ยวข้องจะถูกโยนทิ้งเพื่อให้ผู้ใช้ปรับแต่งการประมวลผล เพื่อให้ผู้ใช้สามารถนำกลับมาใช้ใหม่และเผยแพร่กลุ่มการประมวลผลที่กำหนดเองได้มากขึ้น
export . modules = class MyPlugin ( ) {
constructor ( ) {
this . name = "MyPlugin"
}
async init ( eventBus , config ) {
eventBus . on ( "RESPONSE_CLOSE" , ( payload ) => {
console . log ( payload ) ;
} )
}
} วิธี init เป็นสิ่งจำเป็น วิธีนี้จะถูกเรียกที่จุดเริ่มต้นของการโหลดปลั๊กอินไม่ว่าจะเป็นแบบซิงโครนัสหรือแบบอะซิงโครนัส
eventBus eventBus ได้รับผ่าน new EventEmitter() Core TSW จะกระตุ้นเหตุการณ์ข้างต้นในช่วงเวลาสำคัญต่างๆ
| สำคัญ | ความหมาย (เวลาทริกเกอร์) | น้ำหนักบรรทุก |
|---|---|---|
DNS_LOOKUP_SUCCESS | ทริกเกอร์หลังจากการสืบค้น DNS แต่ละครั้งจะประสบความสำเร็จ | string | dns.LookupAddress[] |
DNS_LOOKUP_ERROR | ทริกเกอร์หลังจากความล้มเหลวของการสืบค้น DNS แต่ละครั้ง | NodeJS.ErrorException |
RESPONSE_START | ทริกเกอร์ทุกครั้งที่เซิร์ฟเวอร์เริ่มส่งคืนการตอบกลับ (เรียกใช้งาน writeHead ) | ResponseEventPayload |
RESPONSE_FINISH | ทริกเกอร์ในตอนท้ายของการตอบสนอง ( res.on("finish") ) | ResponseEventPayload |
RESPONSE_CLOSE | ทริกเกอร์เมื่อปิดลิงก์พื้นฐาน ( res.on("close") ) | ResponseEventPayload |
REQUEST_START | ทริกเกอร์ทุกครั้งที่เซิร์ฟเวอร์ได้รับคำขอใหม่ | RequestEventPayload |
โดยค่าเริ่มต้น TSW จะรวบรวมข้อมูลบันทึกและการจับแพ็กเก็ตทั้งหมดและส่งไปยังบัสกิจกรรมเพื่อการบริโภคปลั๊กอิน ดังนั้นการใช้งานบันทึกและเนื้อหาการจับแพ็คเก็ตโดยทั่วไปต้องการให้ผู้ใช้เขียนปลั๊กอินและจัดเก็บข้อมูลด้วยตัวเองซึ่งมีราคาแพงเกินไปที่จะใช้
ดังนั้น TSW จึงจัดให้มีแพลตฟอร์มบริการสาธารณะ https://tswjs.org อย่างเป็นทางการทำให้ผู้ใช้สามารถใช้ TSW ในราคาที่ต่ำเร็วขึ้นและสะดวกยิ่งขึ้น สำหรับรายละเอียดโปรดดูแนวทางการใช้งานแพลตฟอร์มแบบเปิด
TSW 2.0 ได้รับการออกแบบในการเผชิญกับคอนเทนเนอร์และความเป็นธรรมชาติของคลาวด์ดังนั้นจึงไม่มีฟังก์ชั่นที่เกี่ยวข้องกับคลัสเตอร์ในตัว ขอแนะนำให้ใช้การตรวจสุขภาพของคอนเทนเนอร์โดยตรงเพื่อให้การรีสตาร์ทแบบไม่สูญเสียและกลไกการรีสตาร์ทความผิดพลาดของบริการ สำหรับสถานการณ์ที่ไม่ได้ใช้รูปแบบคอนเทนเนอร์เราขอแนะนำให้ใช้เครื่องมือที่คล้ายกัน PM2 เพื่อใช้โหมดหลายกระบวนการ
// 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 เป็นแพ็คเกจบันทึกสากลและน้ำหนักเบา winston รองรับช่องบันทึกหลายช่องและสามารถกำหนดลำดับความสำคัญของบันทึกแยกต่างหาก นอกเหนือจาก Console การส่งสัญญาณบันทึกในตัวสามช่องทางคอนโซล File และ HTTP แล้วโมดูลการส่งสัญญาณบางอย่างยังคงอยู่นอกโครงการ Winston ตรวจสอบเอกสารอย่างเป็นทางการ winston
TSW 2.0 รองรับข้อมูลบันทึกโดยใช้ช่องสัญญาณ winston ผู้ใช้สามารถเพิ่มอินสแตนซ์ winston.transports ลงในไฟล์การกำหนดค่าและบันทึกจะตกอยู่ในการกำหนดค่าที่สอดคล้องกัน
ใช้ winston เพื่อบันทึกข้อมูลบันทึกต่ำกว่าระดับ error และระดับ debug ไปยังไฟล์ที่เกี่ยวข้อง ไฟล์ config ปัจจุบันได้รับการกำหนดค่าดังนี้:
module . exports = {
winstonTransports : [
new winston . transports . File ( { filename : 'error.log' , level : 'error' } ) ,
new winston . transports . File ( { filename : 'debug.log' , level : 'debug' } )
]
}การตัดไม้




























โปรโตคอลโอเพ่นซอร์สของเว็บเซิร์ฟเวอร์ Tencent คือ MIT ดูใบอนุญาตสำหรับรายละเอียด