【发布时间】:2020-09-04 12:43:14
【问题描述】:
此代码将第一个发射发送到客户端,客户端获取消息开始:'作业正在开始...' 这没关系。 之后,代码启动 puppeteer 并制作屏幕截图 example.png。这也可以。 但是第二次发射没有被触发,也没有发送给客户端。 在我得到的服务器的 console.log 中:
- 工作开始
- 捕获完成
- 工作已完成
这也可以。
发生了什么?为什么第二次发射没有触发?
const express = require('express');
const puppeteer = require('puppeteer')
const app = express();
const server = app.listen(3000);
app.set('view engine', 'ejs');
var io = require('socket.io').listen(server);
app.get('/', function (req, res, next) {
res.render('index');
});
app.get('/scan', function (req, res, next) {
console.log('job is starting');
io.sockets.on('connection', function (socket) {
socket.emit('messageStart', 'Job is starting...');
});
(async () => {
const browser = await puppeteer.launch({headless:false});
const page = await browser.newPage();
await page.goto('https://example.com');
await page.screenshot({ path: 'example.png' });
await browser.close();
console.log('CAPTURE FINISHED');
})().then(()=>{
console.log('job is finished');
io.sockets.on('connection', function (socket) {
socket.emit('messageEnd', 'Job is done!');
});
});
res.render('scan');
});
【问题讨论】:
标签: javascript node.js express async-await puppeteer