【发布时间】:2018-05-02 14:07:49
【问题描述】:
我制作 node.js web 服务器和 tcp 客户端和 java tcp 服务器。 (仅用于学习套接字和Web编程)我想制作用户连接到网页并输入一些信息的程序,然后节点将数据发送到java tcp服务器并获取回显数据,最后将数据渲染到网页。
我的问题是节点首先呈现网页并将数据发送到 java tcp 服务器。我想按顺序制作。我该如何解决?
这是我的代码
var net = require('net');
var rcvData;
var socket;
function getConnection(connName) {
var client = net.connect({ port: 5000, host: '127.0.0.1' }, function () {
console.log(connName + ' Connected: ');
console.log(' local = %s:%s', this.localAddress, this.localPort);
console.log(' remote = %s:%s', this.remoteAddress, this.remotePort);
this.setEncoding('utf8');
this.on('data', function (data) {
rcvData = JSON.parse(data);
console.log("From Server: " + rcvData.year);
this.end();
});
this.on('end', function () {
console.log(connName + ' Client disconnected');
});
this.on('error', function (err) {
console.log('Socket Error: ', JSON.stringify(err));
});
this.on('timeout', function () {
console.log('Socket Timed Out');
});
this.on('close', function () {
console.log('Socket Closed');
});
});
return client;
}
function writeData(socket, data) {
var success = !socket.write(data);
if (!success) {
(function (socket, data) {
socket.once('drain', function () {
writeData(socket, data);
});
})(socket, data);
}
}
// http server
var promise = require('promise');
var express = require('express');
var app = express();
var path = require('path');
var bodyParser = require('body-parser');
var futures = require('futures');
var sequence = futures.sequence();
app.locals.pretty = true;
app.set('view engine', 'pug');
app.set('views', path.join(__dirname, 'views'));
app.use(express.static('public'));
app.use(bodyParser.urlencoded({ extended: false }));
app.get('/', function (req, res) {
res.render('index');
});
app.listen(8080, function () {
console.log('http server> listening on port 8080...');
});
app.post('/result', function (req, res) {
sequence
.then(function(next) {
socket = getConnection("Java TCP Server");
next(null, 1);
})
.then(function (next) {
var jsonData = {
name: req.body.name,
year: req.body.year
};
writeData(socket, JSON.stringify(jsonData));
next(null, 2);
})
.then(function (next) {
console.log('render function enter');
console.log('rcvData : ' + rcvData);
res.render('result', {
name: rcvData.name,
year: rcvData.year
});
next(null, 4);
});
});
【问题讨论】:
标签: javascript node.js express tcp