在nodejs app中启动nodejs tcp服务器

时间:2016-10-13 09:55:49

标签: node.js sockets tcp

我的用例在我正在编写的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: '' })
})

1 个答案:

答案 0 :(得分:1)

您正试图通过json返回服务器对象。

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

没有它就试试。

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