Javascript 使用HTTP请求连续运行node.js文件

Javascript 使用HTTP请求连续运行node.js文件,javascript,node.js,express,httprequest,Javascript,Node.js,Express,Httprequest,我正在使用node.js和express创建一个应用程序,我有一个TCPServer.js文件,用于不断轮询TCP/IP服务器。我希望能够向读取IP地址和端口号的数据库发送一个HTTP请求,然后使用该数据调用我的TCPServer.js文件,该文件反过来轮询TCP服务器 读取数据库时,HTTP请求对TCPServer的单个调用有效,但每当我尝试并持续轮询TCP服务器时,服务器会发出1个轮询响应,然后抛出500个错误 因此,如果只在TCPServer.js中使用getInputData(ipAdd

我正在使用node.js和express创建一个应用程序,我有一个TCPServer.js文件,用于不断轮询TCP/IP服务器。我希望能够向读取IP地址和端口号的数据库发送一个HTTP请求,然后使用该数据调用我的TCPServer.js文件,该文件反过来轮询TCP服务器

读取数据库时,HTTP请求对TCPServer的单个调用有效,但每当我尝试并持续轮询TCP服务器时,服务器会发出1个轮询响应,然后抛出500个错误

因此,如果只在TCPServer.js中使用
getInputData(ipAddress,connPort)
,那么HTTP请求就可以正常工作,并从TCP服务器返回一次响应和一个200响应。使用
setInterval(getInputData(ipAddress,connPort),2000)
我得到一次数据和500个错误响应。我能每2秒进行一次投票吗

TCPServer.js


function getInputData(ipAddress, port) {
          "Function for polling TCP Server runs in here"
}

const iModStart = function startInputModule(ipAddress, connPort) {
  setInterval(getInputData(ipAddress, connPort), 2000)

}

module.exports = iModStart

用于运行http请求的路由处理程序


const iModuleConnect = require('../utils/TCPServer')

//run the polling to input module

router.get('/connections_connect/:id', async (req, res) => {
    const _id = req.params.id

    try {
        const connection = await Connection.findById(_id)
        if (!connection) {
            return res.status(404).send()
        } 
        if(connection) {
            console.log(connection.ipAddress)
            console.log(connection.port)
            iModuleConnect(connection.ipAddress, connection.port)

        }
        res.send(connection)       
    } catch(e) {
        res.status(500).send()
    }
})
module.exports = router


问题是
setInterval
需要一个回调函数作为它的第一个参数,但是您将已经执行的
getInputData
函数的结果传递给它

显然,当函数在第一个时间间隔之前执行时,这一功能会工作一次,但在2000毫秒之后,一旦达到该时间间隔,就没有回调可调用,节点将抛出
TypeError[ERR\u INVALID\u callback]:回调必须是函数
错误

要解决此问题,需要将函数参数绑定到
getInputData
,并将其作为回调传递到
setInterval

const iModStart = function startInputModule(ipAddress, connPort) {
      setInterval(getInputData.bind(getInputData, ipAddress, connPort), 2000);
}

是什么导致
500
错误?您可以打印错误
e