Javascript 获取网站的控制台日志并发送到websocket

Javascript 获取网站的控制台日志并发送到websocket,javascript,node.js,websocket,puppeteer,Javascript,Node.js,Websocket,Puppeteer,我有以下情况: 我想获得一个网站的控制台日志,并将其发送到WebSocket客户端 我能够创建一个节点服务器,并用下面的代码将数据发送给连接的用户 const puppeter=require('puppeter'); const WebSocket=require('ws'); const wss=newwebsocket.Server({port:2222}); wss.on('connection',function connection(ws){ 发送(“发送样本数据”); }); 我

我有以下情况:

我想获得一个网站的控制台日志,并将其发送到WebSocket客户端

我能够创建一个节点服务器,并用下面的代码将数据发送给连接的用户

const puppeter=require('puppeter');
const WebSocket=require('ws');
const wss=newwebsocket.Server({port:2222});
wss.on('connection',function connection(ws){
发送(“发送样本数据”);
});
我可以使用以下代码获取网站的控制台日志:

(异步()=>{
const browser=wait puppeter.launch({
args:[
“没有沙箱”,
“无头”,
“--禁用gpu”,
“--窗口大小=1920x1080”
]
});
const page=wait browser.newPage();
等待页面。转到('https://example.com/test.php');
page.on('console',msg=>console.log(msg.text());
})();
这里的
page.on
是一个回调函数,每次有控制台日志时都会调用该函数。如何向WebSocket客户端广播该消息(Puppeter的console.log)


请注意,只有当应用程序启动并且每秒使用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());
    }
  });
});

有关详细信息,基本上您需要打开与服务器的连接。但是,如果websocket服务器是用于打开Puppeter的同一个节点实例,则根本不需要使用websocket。。。。无论如何,要向ws客户端发送消息,您只需要
ws.send('something')不,它不是同一台服务器,我正在向所有客户广播请检查我的回答:它在本地主机上工作,但在我的云服务器上不工作!!“不工作”的信息不足以帮助您。如果您的云服务器存在特定问题,您可以提出新问题,或提供更多信息。如果我的回答解决了你的问题,请接受它作为正确答案。