Получение консольных сообщений на веб-странице NodeJS

avatar
a-coder
8 августа 2021 в 17:46
64
2
2

Мне интересно, есть ли способ прослушивать сообщения консоли и реагировать на сообщения консоли, когда они получены. В основном, есть ли способ сделать это без внешнего модуля и с помощью модуля http?

Цель состоит в том, чтобы вызвать функцию или фрагмент кода NodeJS при событии, подобном click в HTML. Если есть способ сделать это, то это здорово. Но еще раз, я хотел бы сделать это без внешнего модуля, а просто использовать те, которые встроены в NodeJS.

Источник

Ответы (2)

avatar
Haris Wilson
8 августа 2021 в 17:54
1

Используйте функцию onclick() в JavaScript, чтобы инициировать вызов функции при нажатии на элемент. Затем используйте fetch, чтобы сделать API-вызов на сервер nodejs.

a-coder
8 августа 2021 в 18:56
1

Как вы используете fetch для вызова NodeJS?

avatar
Quantalabs
8 августа 2021 в 19:23
0

Я знаю, что @Haris Wilson уже получил ответ, но я просто хотел бы привести пример кода.

Вместо того, чтобы пытаться перехватить консольное сообщение, а затем выполнить функцию, если мы его найдем, мы можем использовать fetch(), чтобы сделать запрос на любой нужный нам URL, и это может позволить нам делать другие запросы.

В этом случае мы можем использовать модуль url и модуль http для анализа URL-адреса и обслуживания API и веб-сайта соответственно.

const url = require('url')
const http = require('http')

const requestListener = async function (req, res) {
     // Basic server setup
    res.writeHead(200, {
        'Content-Type': 'text/html'
    });

    res.end(/** Content here */)

    // API 
    if (url.parse(req.url, true).pathname === '/APIcall') {
        let arguments = url.parse(req.url, true).query
        
        // Preform necassary actions here
    }
}

Теперь мы можем использовать onClick для вызова функции внутри нашей веб-страницы JavaScript и использовать fetch([API URL]) для предоставления данных NodeJS для выполнения действия. Для этого мы можем использовать параметры URL, например https://localhost:8080/APIcall?data=someData&moreParam=more-data, где ?data=someData&moreParam=more-data — параметры URL.