第一次尝试使用TCP,并制作了一个程序,该程序返回客户端发送的数字的平方。
如何在每次闲置n秒钟后询问客户一个电话号码?
我尝试了setTimeout
方法,但是它在经过了'n'秒后才触发,然后不再被触发。
客户:
const net = require('net');
const readline = require('readline').createInterface({
input: process.stdin,
output: process.stdout
});
const options = {
port : 1234
};
const client = net.createConnection(options, () => {
console.log("Connected to server")
});
client.on('data', (data) => {
console.log(data.toString());
});
client.setTimeout(2000, () => {
readline.question('Number to be squared: ',(num) => {
client.write(num);
});
});
服务器:
const net = require('net');
const port = 1234;
const server = net.createServer(conn => {
console.log('New client joined');
conn.on('data', (data) => {
console.log(`Data received from client: ${data}`)
data = parseInt(data);
data = Math.pow(data,2);
conn.write('From server- '+data.toString());
});
conn.on('end',() => {
console.log('Connection stopped');
});
conn.on('error',(e) => {
console.log('Connection stopped-', e.message);
});
});
server.listen(port);
答案 0 :(得分:1)
您需要监听timeout
事件,回调仅被调用一次。来自doc
:
可选的回调参数将作为“超时”事件的一次性监听器添加。
socket.setTimeout(3000);//setting here.
socket.on('timeout', () => {
console.log('socket timeout');
socket.end();
});