我的用例在我正在编写的nodejs app中启动和停止tcp服务器。
所以我有一个index.js,它在端口3000上启动一个Web服务器。使用端点' /'和' / start',我想分别得到服务器的状态并启动服务器。我还希望通过socket.io显示服务器的状态,但以后会显示。
现在,我正在接受
TypeError:将循环结构转换为JSON
错误,我认为这可能归因于返回下面的服务器对象。
如何通过REST端点启动和停止tcp服务器?
// server.js
'use strict'
var net = require('net')
var server = false
exports.get = function() {
return server
}
exports.start = function(port, host) {
if (!server) {
server = net.createServer(handleConnection).listen(port, host)
return server
}
}
exports.stop = function() {
if (server) {
server.close(() => {
console.log(`server.close called`)
})
server = null
return server
}
}
function handleConnection(socket) {
...
}
这是index.js
// index.js
'use strict'
var net = require('net')
var http = require('http')
var express = require('express')
var bodyParser = require('body-parser')
var app = express()
var addServer = require('./server')
var PORT = 3000
var HOSTNAME = '127.0.0.1'
app.use(bodyParser.json())
app.use(bodyParser.urlencoded({ extended: true }))
var server = http.createServer(app).listen(PORT, HOSTNAME, () => {
console.log('http.createServer started')
})
app.get('/', (req, res) => {
// get addServer status
addServer.get()
res.status(200).json({ status: 'success', command: addServer.get() })
})
app.get('/start', (req, res) => {
// start addServer
addServer.start(9000, '127.0.0.1')
res.status(200).json({ status: 'success', response: '' })
})
答案 0 :(得分:1)
您正试图通过json返回服务器对象。
res.status(200).json({ status: 'success', command: addServer.get() })
没有它就试试。
res.status(200).json({ status: 'success' })