Я уже день изо всех сил пытаюсь заставить это работать, я надеюсь, что кто-то может помочь мне с некоторой основой, поскольку я пытался прочитать об этом без особого успеха.
Цель приложения: Мое приложение принимает имя пользователя и пароль от пользователя, запускает модуль, который запускает кукольник для автоматизации задач, одновременно предоставляя пользователю текущие обновления о ходе кукловода.
2 подключенных пользователя в то же время может вводить разные учетные данные, и кукловод должен работать одновременно, выводя прогресс для указанного c пользователя своей работы.
Я использую node.js + express + e js + socket .io, созданный с помощью генератора express.
Файловая структура выглядит так:
bin/
--www.js
app.js
scraper.js
views/
--index.js
routes/
--index.ejs
public/
...
У меня есть socket.io, работающий в модуле www.js
, где находится сервер настроен, то, что я настроил, - это когда пользователь нажимает кнопку отправки на передней панели, socket.io выдает уникальное полученное сообщение (в www.js) и вызывает функцию launchScraper
внутри scraper.js
.
Я ж ant launchScraper
, чтобы затем отправлять текущие обновления этому отдельному пользователю. т.е. успешно вошел в систему, работа выполнена и т.д. c.
Вопрос: Кажется, я не могу получить парсер. js для отправки сообщения этому уникальному пользователю (используя его socket.id
), Я думаю, что мне не хватает теории. Вот мой код:
www.js
const scraper = require('../scraper');
const socketio = require('socket.io');
...
const server = http.createServer(app);
const io = socketio(server);
...
io.on('connection', (socket) => {
console.log('New connection: '+ socket.id);
...
socket.on('launchScraper', (socket) =>{
console.log('received client launchScraper');
scraper.launchScraper(io,userCredentials);
})
скребок. js
const puppeteer = require('puppeteer');
//This emits the message to all users, but I've tried variations sending `socket.id` in etc and I cannot seem to get it to work.
function emitMessage(io,msg){
io.emit('message',msg);
console.log(msg);
}
async function launchScraper(io,userData) {
emitMessage(io, 'Launching Scraper...'); //Sending io in
const browser = await puppeteer.launch({..});
const page = await browser.newPage();
...
Может кто помочь или предложить лучший способ сделать это? Я просто не хочу, чтобы много кода - это www.js, так как я не верю, что код должен там жить ...
Я новичок ie в Node, и я изо всех сил пытаюсь понимать экземпляры, конструкторы и т. д. c.