2016-10-13 26 views
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: '' }) 
}) 

答えて

1

です。

res.status(200).json({ status: 'success', command: addServer.get() }) 

試してみてください。

res.status(200).json({ status: 'success' }) 
+0

は、どのように私はそれが私はplsは以前のコメントを無視し、あまりにも迅速な型付けアップ – Yakuly

+0

だ返すようにサーバーを取得します。いいえ、それではありません。 addServer.get()はtrueまたはfalseを返します。 – Yakuly

関連する問題