是否可以将node.js服务器的默认控制台输出显示给用户客户端?
我尝试了几个插件,例如'console.re'但其中没有一个为我工作。
我喜欢实时阅读'console.log'输出并将所有输出显示给客户端(移动设备)。
谢谢
答案 0 :(得分:0)
console.log写入stdout
,因此您可以收听它并对数据执行任何操作。
<强>的console.log([数据] [参数])强>
使用换行符打印到stdout。
https://nodejs.org/api/console.html
尝试推进此代码:
const spawn = require('child_process').spawn
const ls = spawn('ls', ['-lh', '/usr'])
const collectedData = []
ls.stdout.on('data', (data) => {
console.log('stdout: ' + data.toString())
collectedData.push({ event: 'CONSOLE_LOG', data })
// now just make the client consume collectedData in real-time
// or on refresh
})
ls.stderr.on('data', (data) => {
console.log('stderr: ' + data.toString())
})
ls.on('exit', (code) => {
console.log('child process exited with code ' + code.toString())
})
内置子进程。请在此处通过这些文档获取示例: https://nodejs.org/api/child_process.html
我对你的设置一无所知,但如果你想在Express
中超级简单app.get('/logging', (req, res) => {
res.send(collectedData)
})
让客户端每2000毫秒或其他什么时候点击它。
否则,您需要使用服务器创建套接字并将更新推送到客户端,并在客户端中处理它们。
您还可以在node.js中相当快地设置TCP和UDP套接字。做一些谷歌搜索。
我有一些示例代码可以给你:
/**
* SERVER
*/
// Load dgram module
const dgram = require('dgram')
// Create new socket
const server = dgram.createSocket('udp4')
// Listening event
server.on('listening', () => console.log('UDP Server listening'))
// Message event
server.on('message', (msg, rinfo) => {
console.log(`${rinfo.address}:${rinfo.port} - ${msg}`)
});
// Start UDP socket listener
const PORT = 3333
const HOST = '127.0.0.1'
server.bind(PORT, HOST)
/**
* CLIENT
*/
const client = dgram.createSocket('udp4')
const ip = require('ip')
client.send('Sample message', PORT, HOST, (err) => {
if (err) throw err
console.log(`UDP message sent: ${ip.address()}`)
client.close()
})