Size: a a a

Node.js — русскоговорящее сообщество

2019 November 05

JD

John Doe in Node.js — русскоговорящее сообщество
Сергей Видякин
т.е. потом масштабирование на несколько прокси это независимая задача? это хорошо
Мне кажется ты не знаешь что такое прокси, либо используешь его в странном контексте
источник

JD

John Doe in Node.js — русскоговорящее сообщество
либо я тупой
источник

СВ

Сергей Видякин in Node.js — русскоговорящее сообщество
John Doe
Мне кажется ты не знаешь что такое прокси, либо используешь его в странном контексте
почему в странном? обычная задача, парсить с нескольких IP во избежание бана
источник

JD

John Doe in Node.js — русскоговорящее сообщество
Anton Cherkasov
for (let i = 0; i < questions.length; i++) {
     slackBot
       .sendMessage(questions[i].text, user_id)
       .then(res => {
       
         let answerField = {
           text: res,
           questionID: questions[i]._id
         };

         newAnswer.answers.push(answerField);
       })
       .catch(err => {
         console.log(`Catch error in slack route`, err);
       });
   }
sendMessage наверное же не возвращает промис
источник

JD

John Doe in Node.js — русскоговорящее сообщество
Anton Cherkasov
2) а так выглядит сама функция отправки сообщений:
const sendMessage = (message, user) => {
  bot.postMessage(user, message, { as_user: true }); // публикуем вопрос

  bot.on('message', msg => {  // здесь слушаем ответ
    const answer = msg.text;

    return JSON.stringify({ answer });    
  });
};
вот же, возвращает json
источник

JD

John Doe in Node.js — русскоговорящее сообщество
или undefined, не пойму с телефона это асинк или нет
источник

AC

Anton Cherkasov in Node.js — русскоговорящее сообщество
John Doe
sendMessage наверное же не возвращает промис
Вот sendMessage. Там я хочу в callback дождаться ответа от юзера, но это тоже пока не работает. Но пробовал без коллбэка, просто с публикацией сообщения - тоже была ошибка с промисом:

const sendMessage = (message, user) => {
 bot.postMessage(user, message, { as_user: true }, function(err, response) {
   if (err) {
     return console.log('Error in answer callback:', err);
   }
   return callback(response);
 });
};
источник

JD

John Doe in Node.js — русскоговорящее сообщество
Anton Cherkasov
Вот sendMessage. Там я хочу в callback дождаться ответа от юзера, но это тоже пока не работает. Но пробовал без коллбэка, просто с публикацией сообщения - тоже была ошибка с промисом:

const sendMessage = (message, user) => {
 bot.postMessage(user, message, { as_user: true }, function(err, response) {
   if (err) {
     return console.log('Error in answer callback:', err);
   }
   return callback(response);
 });
};
Погугли как промисифицируются колбек функции в javascript
источник

СВ

Сергей Видякин in Node.js — русскоговорящее сообщество
John Doe
Мне кажется ты не знаешь что такое прокси, либо используешь его в странном контексте
судя по примерам для библиотеки request, достаточно ей в вызов подсовывать в параметр "proxy" адрес и всё. Заказчик зачем-то мне про разворачивание на амазоновском пуле рассказывал
источник

JD

John Doe in Node.js — русскоговорящее сообщество
Сергей Видякин
судя по примерам для библиотеки request, достаточно ей в вызов подсовывать в параметр "proxy" адрес и всё. Заказчик зачем-то мне про разворачивание на амазоновском пуле рассказывал
Может он имел ввиду reverse proxy. В этом случае reverse proxy обычно выступает в качестве load balancer
источник

AC

Anton Cherkasov in Node.js — русскоговорящее сообщество
John Doe
Погугли как промисифицируются колбек функции в javascript
ок, спасибо, но я сейчас вообще убрал коллбэк - ошибка все равно осталась.

Правда ошибка выходит в месте, где я вызываю этот цикл. По ходу дела там я что-то неправильно сделал. То есть там логика такая: функция обрабатывает комманду юзера -> вызывает функцию для сбора данных с бд и обращается к серверу по апи (тут и выскакивает ошибка) -> в api routes делается этот цикл с промисом и вызывается sendMessage. Вот код функции, где выскакивает ошибка:

const getSettings = async (email, user_id) => {
  try {
    const user = await User.findOne({ email });   //обращаюсь к бд и нахожу данные

    const body = JSON.stringify({ questions, email, user_id });
    const config = { headers: { 'Content-Type': 'application/json' } };
    const endpoint = 'http://localhost:5000/api/slack/questions';

    const res = await axios.post(endpoint, body, config); // происходит запрос, но потом ошибка
  } catch (err) {
    console.error(`Slack get standups error: `, err.message);  // здесь выходит ошибка
  }
};
источник

wo

went out in Node.js — русскоговорящее сообщество
Алексей Попов
Асинхронный конструктор это не нормально
Объект в неизвестно каком состоянии это не нормально
Там как минимум будет`instanceof Promise`, так что состояние известно :)
источник

СВ

Сергей Видякин in Node.js — русскоговорящее сообщество
John Doe
Может он имел ввиду reverse proxy. В этом случае reverse proxy обычно выступает в качестве load balancer
Может это я тупой, но под прокси я имел ввиду обычный прокси:

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

JD

John Doe in Node.js — русскоговорящее сообщество
Сергей Видякин
Может это я тупой, но под прокси я имел ввиду обычный прокси:

Прокси-сервер, иначе - сервер-посредник — промежуточный сервер (комплекс программ) в компьютерных сетях, выполняющий роль посредника между пользователем и целевым сервером (при этом о посредничестве могут как знать, так и не знать обе стороны), позволяющий клиентам как выполнять косвенные запросы (принимая и передавая их через прокси-сервер) к другим сетевым службам, так и получать ответы.
Да, я понял. То о чем ты говоришь называется forward proxy. А ещё есть reverse proxy, это тоже proxy, но выполняет чуть другую работу в отличии от forward
источник

JD

John Doe in Node.js — русскоговорящее сообщество
Сергей Видякин
Может это я тупой, но под прокси я имел ввиду обычный прокси:

Прокси-сервер, иначе - сервер-посредник — промежуточный сервер (комплекс программ) в компьютерных сетях, выполняющий роль посредника между пользователем и целевым сервером (при этом о посредничестве могут как знать, так и не знать обе стороны), позволяющий клиентам как выполнять косвенные запросы (принимая и передавая их через прокси-сервер) к другим сетевым службам, так и получать ответы.
тут видишь написано - как принимать так и передавать запросы. Reverse принимает, а forward передаёт
источник

СВ

Сергей Видякин in Node.js — русскоговорящее сообщество
John Doe
тут видишь написано - как принимать так и передавать запросы. Reverse принимает, а forward передаёт
👍
источник

JD

John Doe in Node.js — русскоговорящее сообщество
Сергей Видякин
Может это я тупой, но под прокси я имел ввиду обычный прокси:

Прокси-сервер, иначе - сервер-посредник — промежуточный сервер (комплекс программ) в компьютерных сетях, выполняющий роль посредника между пользователем и целевым сервером (при этом о посредничестве могут как знать, так и не знать обе стороны), позволяющий клиентам как выполнять косвенные запросы (принимая и передавая их через прокси-сервер) к другим сетевым службам, так и получать ответы.
Хотя я не прав, тут скорее всего только о forward proxy.

Короче просто знай что есть два вида прокси серверов. Reverse proxy как раз связан с маштабированием т. к. обычно выполняет функцию load balancer'а
источник

СВ

Сергей Видякин in Node.js — русскоговорящее сообщество
как я понял мне надо просто при обнаружении капчи менять брать новый прокси из списка и повторять запрос
источник

СВ

Сергей Видякин in Node.js — русскоговорящее сообщество
вроде нашел идеальное решение https://scrapoxy.io/
источник

JD

John Doe in Node.js — русскоговорящее сообщество
Сергей Видякин
как я понял мне надо просто при обнаружении капчи менять брать новый прокси из списка и повторять запрос
хз, но изначально вопрос был о процессах из чего я решил что он о маштабировании
источник