节点JS读取用户设备上的控制台输出

时间:2017-10-14 21:32:51

标签: javascript sql node.js console

是否可以将node.js服务器的默认控制台输出显示给用户客户端?
我尝试了几个插件,例如'console.re'但其中没有一个为我工作。

我喜欢实时阅读'console.log'输出并将所有输出显示给客户端(移动设备)。

谢谢

1 个答案:

答案 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()
})