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 ( { } )
]
}Список параметров :
| Имя | Тип | по умолчанию | Необязательный | Описание |
|---|---|---|---|---|
| плагины | Массив <плагин> | - | да | Список плагина |
| Чистый | логический | false | да | Выключить печать по умолчанию |
| loglevel | DEBUG/INFO/WARN/ERROR | DEBUG | да | Установить уровень журнала |
| Winstontransports | Массив <TransportStream> | - | да | Winston Log Channel |
npx @tswjs/tsw ./index.js ПРИМЕЧАНИЕ . Оригинальные параметры CLI в node --inspect ./index.js , такие как --inspect , должны быть преобразованы в переменную среды NODE_OPTIONS для выполнения, например, NODE_OPTIONS="--inspect" npx @tswjs/tsw ./index.js .
Используйте TS : При обеспечении того, чтобы в проекте был пакет зависимости TS-узла, файл 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 вызовет вышеуказанные события в различные критические моменты.
| ключ | Значение (время триггера) | полезная нагрузка |
|---|---|---|
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 .
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' } )
]
}Регистрация




























Протокол с открытым исходным кодом Web Tencent Server - это MIT, см. Лицензию для получения подробной информации.