【发布时间】:2016-03-26 19:07:13
【问题描述】:
我想向基于 C++ 的服务器发送一条消息,该服务器在发送消息后正在侦听端口“9090”,服务器将执行一些需要一些时间的工作或任务,所以我不想离开 app.get();功能块,在从服务器获取数据然后作为响应发送回用户之前,我该怎么做?
基本上我想要的是不回复用户,留在循环中 while(close_connection_flag == false) 直到它设置为 true 以离开循环(直到我得到一个 tcp-reply 数据)然后离开循环并回复用户。
我的代码:
var net = require('net');
var tcp_client = new net.Socket();
var express = require('express');
var app = express();
var close_connection_flag = false;
var flag_raised_by_server = '';
app.get('/', function(req, res) {
tcp_client.on('connect', function(){
console.log('[+] Connected.');
tcp_client.write('HelloServerSideFrom:Client-Server');
});
while(close_connection_flag == false) {
tcp_client.on('data', function(data) {
switch(data){
case 'HelloClientServerFrom:Server':
close_connection_flag = true;
break;
case 'data-success':
close_connection_flag = true;
flag_raised_by_server = 'ds';
break;
case 'data-failure':
close_connection_flag = true;
flag_raised_by_server = 'df';
break
default:
// do nothing.
break;
}
});
}
res.end('flag raised by server is: ' + flag_raised_by_server);
tcp_client.destroy();
});
注意:我还是Node.js的新手,所以如果你能提供一些cmets或示例代码的解释,如果你提供的话,谢谢。
【问题讨论】:
-
你不应该有一个
tcp_client.on('close')事件吗?
标签: javascript node.js sockets