与socket.io异步/等待

编程入门 行业动态 更新时间:2024-10-10 00:22:30

与<a href=https://www.elefans.com/category/jswz/34/1771252.html style=socket.io异步/等待"/>

与socket.io异步/等待

此代码将第一个发射发送给客户端,客户端获得messageStart:'Job正在启动...'没关系。此后,代码启动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('');
    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');
});
回答如下:

您需要收听一次连接并向套接字发出两次。

const scanner = async () => {
  const browser = await puppeteer.launch({headless:false});
  const page = await browser.newPage();
  await page.goto('https://example');
  await page.screenshot({ path: 'example.png' });
  await browser.close();
  console.log('CAPTURE FINISHED');
}

app.get('/scan', async function (req, res, next) {
  // emit to all clients on start
  console.log('job is starting');
  io.emit('messageStart', 'Job is starting...');

  // do the actual stuff
  await scanner();

  // emit to all clients on finish
  console.log('job is finished');
  io.emit('messageEnd', 'Job is done!');

  res.render('scan');
});

更多推荐

与socket.io异步/等待

本文发布于:2024-05-07 20:25:18,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1757103.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:socket   io

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!