首先,我想说一下我在尝试什么。我有一个物联网设备,它将数据发送到我的服务器。我在2个不同的端口上运行2个应用程序。其中一个是运行在端口5000上的http服务器。另一个是运行在端口9000上的tcp服务器。我希望2个端口能够相互通信,并希望在浏览器上查看数据。
我使用websocket与2个端口通信,但失败了。请让我知道我在哪里弄错了。
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");
});
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!');
});
顺便说一句没有错误消息。