Tencent Server Web (TSW) هي البنية التحتية Node.js لمطوري الواجهة الأمامية على الويب ، مع النية الأصلية لتحسين كفاءة تحديد المواقع ، وتوفر التقاط حزم الصباغة وتسجيل ثلاثي الأبعاد . تركز TSW على إمكانات تشغيل وصيانة الأعمال ، وهي مناسبة لسيناريوهات العمل لبروتوكولات HTTP و HTTPS ، ويمكن دمجها بسلاسة مع التطبيقات الحالية (KOA و Express).
يعتمد TSW 2.0 على 1.0 ، ويكمله نموذج تصميم حديث ، مما يؤدي إلى إزالة الكثير من الخبث في 1.0 ، كما أنه أكثر وضوحًا في الحاويات والأسود الأصلي. تحقيق الوصول غير الغازي ومنخفض التكلفة.
0 اقتحام | ؟سجل ثلاثي الأبعاد | ؟طلب التقاط الحزمة |
|---|---|---|
| يتم تنفيذ الوظائف من خلال Hack NodeJs الكامنة. غزو رمز العمل الأصلي 0. | تم تجميع السجل المجسم على مستوى المجهر وفقًا لتجميع الطلب ، مما يمنح المطورين استعادة حية مثالية. | يمكن أن يزحف محتوى الحزمة الكامل لجميع الطلبات المرسلة من جانب الخادم إلى الخارج ، ولم يعد الاتصال بالخلفية يمكن الوصول إليه. |
npm install --save @tswjs/tsw
// yarn add @tswjs/tsw ملف التكوين هو ملف تكوين تم تحميله في وقت التشغيل عند بدء تشغيل TSW ، ويعلن بشكل أساسي قائمة المكونات الإضافية التي يجب استخدامها. بشكل افتراضي ، سيتم تحميل ملف tswconfig.js في الدليل الجذر للمشروع ، ويمكن تحديد مسار ملف التكوين يدويًا عن طريق بدء تشغيل المعلمات -c أو --config .
ملاحظة : لا يوجد منطق يتعلق بدمج النظام الأساسي المفتوح في 2.0 ، ولكن يتم تغليفه في مكون إضافي للمستخدمين لاستخدامه عند الطلب. انظر الفصل المكون الإضافي للحصول على التفاصيل.
مثال ملف التكوين:
module . exports = {
plugins : [
new MyPlugin ( { } )
]
}قائمة المعلمات :
| اسم | يكتب | تقصير | خياري | وصف |
|---|---|---|---|---|
| الإضافات | صفيف <reclosin> | - | نعم | قائمة البرنامج المساعد |
| cleanlog | منطقية | false | نعم | ما إذا كان يجب إيقاف الطباعة الافتراضية |
| Loglevel | DEBUG/INFO/WARN/ERROR | DEBUG | نعم | تعيين مستوى السجل |
| Winstontransports | Array <TransportSream> | - | نعم | قناة وينستون سجل |
npx @tswjs/tsw ./index.js ملاحظة : NODE_OPTIONS تحويل معلمات CLI الأصلية في node --inspect ./index.js --inspect 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 NodeJS الخاصة بـ http.request و http.createServer لتنفيذ آلية التقاط الحزم. قبل وبعد أن يقوم الخادم بمعالجة الطلب ، قبل وبعد أن يرسل الخادم حزم إلى خوادم أخرى ، وما إلى ذلك ، سيتم طرح الأحداث المقابلة للمستخدمين لتخصيص المعالجة. من أجل جعل المستخدمين أكثر ملاءمة لإعادة استخدام هذه المجموعات من المعالجة المخصصة ونشرها ، قمنا بتجريدها وشكلنا آلية مكون من الإضافات.
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() . سيؤدي TSW Core إلى تشغيل الأحداث المذكورة أعلاه في لحظات حرجة مختلفة.
| مفتاح | المعنى (توقيت الزناد) | حمولة |
|---|---|---|
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 Transmission. يمكن للمستخدمين إضافة مثيلات 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' } )
]
}قطع الأشجار




























بروتوكول Open Source الخاص بـ Tencent Server Web هو معهد ماساتشوستس للتكنولوجيا ، راجع الترخيص للحصول على التفاصيل.