[英]Start a nodejs tcp server within nodejs app
我的用例是在我正在編寫的nodejs應用程序內啟動和停止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: '' })
})
您正在嘗試通過json返回服務器對象。
res.status(200).json({ status: 'success', command: addServer.get() })
嘗試不使用它。
res.status(200).json({ status: 'success' })
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.