如何连接TCP服务器和HTTP服务器?

时间:2019-08-04 17:48:18

标签: node.js reactjs tcp socket.io

首先,我想说一下我在尝试什么。我有一个物联网设备,它将数据发送到我的服务器。我在2个不同的端口上运行2个应用程序。其中一个是运行在端口5000上的http服务器。另一个是运行在端口9000上的tcp服务器。我希望2个端口能够相互通信,并希望在浏览器上查看数据。

我使用websocket与2个端口通信,但失败了。请让我知道我在哪里弄错了。

HTTP服务器

const express = require('express');
const cors = require('cors');
const mongoose = require('mongoose');

require('dotenv').config();

const app = express();
const app_port = process.env.PORT || 5000;
const tcp_HOST = 'localhost';
const tcp_PORT = 9000;



app.use(cors());
app.use(express.json());

const uri = process.env.ATLAS_URI;
mongoose.connect(uri, { useNewUrlParser: true, useCreateIndex: true }
);
const connection = mongoose.connection;
connection.once('open', () => {
  console.log("MongoDB database bağlandı");
})

const exercisesRouter = require('./routes/exercises');
const usersRouter = require('./routes/users');
const mapRouter = require('./routes/map');

app.use('/exercises', exercisesRouter);
app.use('/users', usersRouter);
app.use('/map', mapRouter);

const http_server = app.listen(app_port);

console.log(`Serverın çalıştığı port: ${app_port}`);

const wsock = require('socket.io').listen(http_server);
const tcpSocket = require('net');

wsock.sockets.on('connection', function (socket) {
    console.log("bağlantı açıldı");
    var tcpClient = new tcpSocket.Socket();
    tcpClient.setEncoding("ascii");
    tcpClient.setKeepAlive(true);

    tcpClient.connect(tcp_PORT, tcp_HOST, function() {
        console.log("deneme");
        console.info('CONNECTED TO : ' + tcp_HOST + ':' + tcp_PORT);

        tcpClient.on('data', function(data) {
            console.log('DATA: ' + data);
            socket.emit("httpServer", data);
        });

        tcpClient.on('end', function(data) {
            console.log('END DATA : ' + data);
        });
    });

    socket.on('tcp-manager', function(message) {
        console.log('"tcp" : ' + message);
        return;
    });

    socket.emit("httpServer", "Initial Data");
});

TCP服务器

const net = require('net');

const HOST = 'localhost';
const PORT = 9000;

const server = net.createServer();
server.listen(PORT, HOST);
console.log("tcp server çalışıyor");

server.on("connection", socket=>{
  const remoteAddress = socket.remoteAddress + ":" + socket.remotePort;
  console.log("yeni bağlantı %s", remoteAddress);
  socket.write("deneme tcp server");
  socket.on("data", (d)=>{
    console.log("gelen data : %s", d);
    socket.write('You said "' + d + '"');
  })

  socket.on("close", ()=>{
    console.log("bağlantı %s tarafından kapatıldı", remoteAddress);
  })

  socket.on("error", (err)=>{
    console.log("bağlantı %s hatası: %s", remoteAddress, err.message);
  })
}).listen(PORT, HOST);

反应成分

  socket = io("http://localhost:9000");

  socket.on('connection', function(){
    console.log('Socket connected!');
  });

顺便说一句没有错误消息。

0 个答案:

没有答案