0
私が書いているnodejsアプリ内のtcpサーバーを起動して停止するためのユースケース。nodejsアプリ内でnodejs tcpサーバーを起動する
私はポート3000でWebサーバーを起動するindex.jsを持っています。エンドポイント '/'と '/ start'を使用して、サーバーのステータスを取得してサーバーをそれぞれ起動したいと考えています。私はsocket.io経由でサーバのステータスを表示したいと思いますが、それは後で行います。
は今のところ、私はそれはおそらく以下のサーバーオブジェクトを返すことに起因すると考え
TypeError: Converting circular structure to 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) {
...
}
あなたはJSONを介してサーバオブジェクトを返すようにしようとしている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: '' })
})
は、どのように私はそれが私はplsは以前のコメントを無視し、あまりにも迅速な型付けアップ – Yakuly
だ返すようにサーバーを取得します。いいえ、それではありません。 addServer.get()はtrueまたはfalseを返します。 – Yakuly