02.06.2021, 00:44
|
Новичок на форуме
|
|
Регистрация: 01.06.2021
Сообщений: 5
|
|
Получить данные клиента, обработать логикой на сервере, передать результат клиенту
Доброго времени суток, уважаемые разработчики.
Прошу вашей помощи. Начал изучать Node js на практике и застрял.
Задача вот в чём: есть десктопное приложение - шифровальщик на electron (html, css, js), которое нужно перереботать в веб. Логика на app.js включая ключ шифрования. Соответственно логика (шифрование) должно происходить на сервере.
Алгоритм:
1. Клиент вводит текст в input (textarea) id="X", нажимает button;
2. Браузер отправляет value из id="X" на сервер;
3. Сервер принимает value из id="X" в переменную и передаёт аргументом в функцию шифрования;
4. Зашифрованный текст передаётся на фронтэнд в textarea Id="y" ;
Это как если бы был калькулятор на сервере, а цифры и кнопки операций на клиенте.
Ребят, прошу меня извинить, если спросил элементарщину, но, правда, перегуглил и переютубил уже везде, но ответа не нашёл. Везде какой то мрак и всё не то.
Заранее благодарю.
|
|
02.06.2021, 10:06
|
|
CacheVar
|
|
Регистрация: 19.08.2010
Сообщений: 14,215
|
|
Сообщение от John_Medved
|
Зашифрованный текст передаётся на фронтэнд в textarea Id="y"
|
Так сразу сервер не передаст...
Но может прислать зашифрованное ответом на
Сообщение от John_Medved
|
Браузер отправляет value из id="X" на сервер
|
А вот, получив ответ, клиентский JS может поместить зашифрованное куда нужно.
Т.е. техника тут такая "запрос на сервер -> ответ сервера -> какие-то действия с полученными данными"
|
|
02.06.2021, 10:08
|
|
CacheVar
|
|
Регистрация: 19.08.2010
Сообщений: 14,215
|
|
Сообщение от John_Medved
|
Везде какой то мрак и всё не то.
|
Да брось...
Я сам уже несколько месяцев читаю книги по Node.JS и мрака там не замечал.
Основная проблема в том, что книги те не моложе 2017-го года.
И не все примеры уже рабочие.
|
|
02.06.2021, 11:08
|
Новичок на форуме
|
|
Регистрация: 01.06.2021
Сообщений: 5
|
|
Добрый день. Спасибо, что откликнулся на зов.
Ну да, пусть оно на фронтэнд придёт в переменную допустим cryptedData от сервера, а дальше клиентская логика его закинет в textarea с id="y". Главное, чтобы основные функции шифрования и дешифрования выполнялись на сервере. Чтоб юзер не видел ключа.
Вот допустим есть index.html, который app.get('/', fuction(req, res) {
res.sendFile(__dirname + '/index.html');
});
Например такой:
<p style="text">Введите первое число</p>
<textarea> id="X" </textarea>
<p style="text">Введите второе число</p>
<textarea> id="y" </textarea>
<button id="summ" onclick="?????" > Сложить</button>
И функция на сервере:
function summData(x, y) {
x+y;
}
Вот и как заставить их взаимодействовать?
|
|
02.06.2021, 11:12
|
Новичок на форуме
|
|
Регистрация: 01.06.2021
Сообщений: 5
|
|
Начал читать Пауэрса Изучаем Node переходим на сторону сервера. Вроде пока хорошо заходит. Надеюсь дойду до своего решения.
А до этого смотрел ютуб, stackoverflow, habr и прочий интернет. Не нашёл ответа. Может просто просмотрел по тупости)))
|
|
02.06.2021, 12:32
|
|
CacheVar
|
|
Регистрация: 19.08.2010
Сообщений: 14,215
|
|
Сообщение от John_Medved
|
Начал читать Пауэрса Изучаем Node переходим на сторону сервера.
|
Да, в этой книжке довольно простенько рассказывают про обработку http и создание API...
У тебя будет get запрос, который вернет закодированную строку.
|
|
02.06.2021, 12:47
|
|
CacheVar
|
|
Регистрация: 19.08.2010
Сообщений: 14,215
|
|
Сообщение от John_Medved
|
Вот и как заставить их взаимодействовать?
|
Вот пример простого сервера, который отвечает на POS-запросы...
var http = require('http');
var querystring = require('querystring');
var server = http.createServer().listen(3000);
server.on('request', function(request,response) {
if (request.method == 'POST') {
var body = '';
// Фрагмент данных присоединяется к body
request.on('data', function (data) {
body += data;
});
// Переданные данные
request.on('end', function () {
var post = querystring.parse(body);
// В post будет твоя строка, которую ты передал серверу
console.log(post);
response.writeHead(200, {'Content-Type': 'text/plain'});
// Вот тут тебе нужно вернуть закодированную строку
response.end('Hello World\n');
});
}
});
console.log('Сервер прослушивает порт 3000');
|
|
02.06.2021, 14:45
|
Новичок на форуме
|
|
Регистрация: 01.06.2021
Сообщений: 5
|
|
Спасибо, Бро!
Попробую так.
|
|
02.06.2021, 15:21
|
|
CacheVar
|
|
Регистрация: 19.08.2010
Сообщений: 14,215
|
|
Вот вариант для ГЕТ и ПОСТ...
var http = require('http');
var querystring = require('querystring');
var server = http.createServer().listen(3000);
server.on('request', function(request,response) {
console.log(request.url)
//console.log(Object.keys(request))
if (request.method == 'POST') {
var body = '';
// Фрагмент данных присоединяется к body
request.on('data', function (data) {
body += data;
});
// Переданные данные
request.on('end', function () {
var post = querystring.parse(body);
// В post будет твоя строка, которую ты передал серверу
console.log(post);
response.writeHead(200, {'Content-Type': 'text/plain; charset=utf-8'});
// Вот тут тебе нужно вернуть закодированную строку
response.end('POST запрос');
});
}
if (request.method == 'GET') {
response.writeHead(200, {'Content-Type': 'text/plain; charset=utf-8'});
response.end('GET запрос');
}
});
console.log('Сервер прослушивает порт 3000');
|
|
02.06.2021, 16:34
|
|
Профессор
|
|
Регистрация: 13.03.2013
Сообщений: 1,572
|
|
не очень хорошая идея в теперешнем часе писать ручками сервера
понимать как работает надо
но лучше взять хорошее готовое
к примеру https://www.fastify.io/
один из лучших быстрых серверов js на текущий момент
с большим количеством расширением
|
|
|
|