);
客户端通过调用http.request方法请求服务器端的接口,并打印返回的信息。
const http = require('http');
const util = require('util')
var opt = {
host: 'localhost',
port: 3001,
method: 'GET',
var req = http.request(opt, function(res) {
util.log('STATUS:', res.statusCode);
res.setEncoding('utf8');
var resultText = '';
res.on('data', (chunk) => {
resultText += chunk;
res.on('end', () => {
util.log(resultText);
req.on('error', (e) => {
util.log(e);
util.log("start request...")
req.end();
先启动服务器端,然后启动客户端。请求的结果如下所示:
服务器端:
bbash-3.2$ node app.js
12 Nov 21:02:16 - server listening at port 3001......
12 Nov 21:02:22 - Received a request.
12 Nov 21:05:22 - timeout
bash-3.2$ node app.js
12 Nov 21:02:22 - start request...
12 Nov 21:04:22 - { [Error: socket hang up] code: 'ECONNRESET' }
通过上面的运行结果可以看到,客户端在请求等待了2分钟之后,就报错了 ECONNRESET 的错误。
解决措施:调用服务器端的server.setTimeout()方法将服务器端的超时设置得大一点或者直接将超时机制关闭(将超时时间设置为0即可关闭)。
就使用上面的代码,客户端不变,服务器在文件最后调用server.setTimeout()方法,如下所示,
var server = app.listen(3001, function() {
sutil.log("server listening at port 3001......");
server.setTimeout(0)
先启动服务器端,然后再启动客户端,运行结果如下:
服务器端:
bash-3.2$ node app.js
12 Nov 21:37:22 - server listening at port 3001......
12 Nov 21:37:29 - Received a request.
12 Nov 21:40:29 - timeout
bash-3.2$ node app.js
12 Nov 21:37:29 - start request...
12 Nov 21:40:29 - STATUS: 200
12 Nov 21:40:29 - hello world
从上面运行结果可见,客户端能够正常接收到服务器端的返回结果了。
(done)