我创建了一个 TCP 服务器来接收来自某些设备的信息,并且我想从该服务器创建一个 API,我导出了两个变量以便在 API 中使用它们。当我这样做时,我的服务器在我的另一个进程中启动,使它们同时执行,我不知道为什么会这样
//server.js
const { title, BL_url, puerto_controladores, puerto_api } = require('...')
process.title = title;
var net = require('net');
var sockets = [];
var socketsID = [];
var lastConnected = [];
var server = net.createServer( function (socket) {
socket.name = socket.remoteAddress + ":" + socket.remotePort;
sockets.push(socket);
socketsID.push(socket.name.substr(7));
console.log(socket.name + ' connected.');
socket.on('data', (data) => {
textChunk = data.toString('utf8').substr(1,data.toString('utf8').length-2);
console.log('Mensaje de ' + socket.name.substr(7) +
socket.on('close', () =>{
console.log(socket.name + " desconectado.");
});
socket.on('error', (error) =>{
console.log('Error del Cliente TCP: ' + puerto_controladores, error.code, error.message);
});
});
server.on('error', (error) => {
console.log('Error del Server TCP: ' + puerto_controladores, error.message);
});
server.listen(puerto_controladores, ()=>{
setInterval(() => {
webMethods.sendInterval();
}, 180000);
console.log("Server listening at : " + puerto_controladores);
});
//setInterval(()=>{
module.exports = {sockets,socketsID};
另一方面:
const {sockets,socketsID} = require('..server.js');
const {titleProcess,port} = require('...');
process.title = titleProcess;
const express = require('express');
const bodyParser = require('body-parser');
const app = express();
app.listen(port, () => {
console.log('Listening at :',port);
});
app.get('/',(req,res)=>{
console.log(test.sockets,test.socketsID);
res.status(200).json({
mensaje: 'received',
})
})
无论我在 server.js 中做什么,module.export 的打印,一个新变量,包括命令提示符中的进程标题等。它在 API.js 控制台中运行
//API Output:
Server listening at : 9006
Listening at : 4002
{ sockets: [], socketsID: [] }
{ sockets: [], socketsID: [] }
//Server Output:
Error del Server TCP: 9006 listen EADDRINUSE: address already in use :::9006