CNode

如何把用nodejs写的程序当成一个服务被其它程序访问?

问答
SSidKwok发布于8 年前最后回复8 年前5 回复3551 浏览0 收藏

我举个puppeteer的例子。

现在的需求是: 1、用户通过前端点击一个按钮,给php的后端发一个ajax请求 2、php通过调用nodejs写的脚本获取puppeteer生成的截图 3、把截图发送到前端

问题: 因为这个脚本每次调用,都会重新执行一次 puppeteer.launch() -> browser.newPage() -> 截图 -> browser.close(),但是现在希望,puppeteer.launch() browser.close(只执行一次,也就是在脚本开启和脚本关闭的时候执行。而browser.newPage() -> 截图希望在每次请求的时候再执行。也就是说希望puppeteer的启动和关闭在一个脚本A,截图在脚本B,而脚本A是一直运行的,直到人为手动关闭。而每次执行node B.js就可以无需启动puppeteer而执行截图功能。

请问这种效果要怎么做?目前想到的是把这段脚本写成一个类似web的服务,每次请求来了就用http请求这个截图服务,然后返回相应的response。

有没有一种方法是可以,将puppeteer的启动和关闭的脚本放在一个进程里,然后另外一个进程主要做的是截图的代码?

查看回复

回复 (5)

A
atian25#1·8 年前

faas

X
x-cold#2·8 年前

解释一下楼上,Function As A Service。 1、把你 puppeteer 截图服务封装成一个函数(模块),至于里面的热启动、缓存、健康检查之类的也可以稍微扩展; 2、然后通过一些 web 框架(如 egg、koa)透出一个 http 的接口,当然 serverless 也是很适合这种场景的(如果全程都是冷启动的话); 3、PHP 调用……

S
SidKwok#5·8 年前
引用 x-cold@SidKwok 是的 http://php.net/manual/zh/book.curl.php

@x-cold @atian25 好的 感谢提供思路

参与回复
登录后即可参与回复。登录