1
嘿,我正在编写一个应用程序。我要求客户根据收到的消息输入特定的消息,我将数据从服务器发送回客户端。会发生什么情况是,当用户从客户端输入数据时,在响应来临之前客户端再次打印“输入消息”...我正在使用node.js的readline和net模块。这里是我的代码:在让客户端输入另一条消息之前等待服务器响应
var server = net.createServer( //My server side code which sends response.
function(socket){
console.log("Client connection...");
socket.on('end', function(){
console.log("Client disconnected...");
});
socket.on('data', function(data){
console.log(" Received: ", data.toString());
a=data.toString();
if(a=="lookupByLastName Smith") //json data send if client sends this
{
arr= employees.lookupByLastName('Smith');
socket.write("Data"+JSON.stringify(arr));
}
});
socket.write("Hello from server");
});
//客户端代码:
var rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
var readMessage = function(client) {
rl.question("Enter Message: ", function (line){
client.write(line);//enter message appears twice before server res.
if (line == "bye")
client.end();
else
readMessage(client);
});
};
var client = net.connect({port:3000},
function(){
console.log("Connected to server");
readMessage(client);
});
client.on('end', function(){
console.log("Client disconnected...");
return;
});
client.on('data', function(data){
console.log("\n --Received:", data.toString());
});
Check the second message "Enter message" it shouldn't appear second time till server responds back。所以在解决它帮助需要。
那么您是否解决了超时或有问题任何其他方式。其次,服务器代码将保持与我发布的相同。我没有得到你的逻辑。 –
忘记超时,仅在从服务器接收到数据后才要求用户输入。输入输入后,客户端将不会做任何事情,直到数据响应来自服务器等。 –