javascript - 获取网站的控制台日志并发送到 websocket
问题描述
我有以下情况:
我想获取网站的控制台日志并将其发送到 WebSocket 客户端。
我能够使用以下代码创建节点服务器并将数据发送给连接的用户。
const puppeteer = require('puppeteer');
const WebSocket = require('ws');
const wss = new WebSocket.Server({ port: 2222 });
wss.on('connection', function connection(ws) {
ws.send("sending the sample data");
});
我能够使用以下代码获取网站的控制台日志:
(async () => {
const browser = await puppeteer.launch({
args: [
'--no-sandbox',
'--headless',
'--disable-gpu',
'--window-size=1920x1080'
]
});
const page = await browser.newPage();
await page.goto('https://example.com/test.php');
page.on('console', msg => console.log(msg.text()));
})();
这page.on
是一个回调函数,每次有控制台日志时都会调用它。如何将该消息(来自 puppeteer 的 console.log)广播到 WebSocket 客户端?
请注意,网站仅在应用程序启动时打开一次,并且每秒使用 setInterval 生成 console.log 输出。因此,新用户只能获得最新数据。
解决方案
而不是console.log(msg.text())
您需要将消息广播给所有 ws 客户端,对吗?
所以一个简单的代码将是:
page.on('console', msg => {
wss.clients.forEach(function each(client) {
if (client.readyState === WebSocket.OPEN) {
client.send(msg.text());
}
});
});
阅读此处了解更多信息
推荐阅读
- c# - WPF WindowsFormsHost 内存泄漏
- textedit - Big Sur TextEdit 删除行跳转到纯文本文件的开头
- python - Dask:NotImplementedError:不支持具有未知类别的`df.column.cat.codes`
- java - 用于检查数组中重复值的 Java 方法为每个重复值输出新行
- c# - 多态绑定器:当自定义模型绑定包装在另一个类中时验证不起作用
- html - 简单的 CSS 视差在 Chrome 中创建空白
- amazon-cloudformation - 为参数“instanceProfileName”提供的值无效
- json - Flutter Http Request 从 JSON 响应中删除重复项
- python - 如何在 Python 中创建数字/字母间隔
- python - draw.lines 返回什么?