❶ nodejs 怎样创建一个http长连接的客户端
默认情况下,NodeJS HTTP 服务器对每个客户端的Web Request的连接时长是2分钟,也就是说,一旦2分钟内,你服务器端没有发送response,那么客户端的连接就会被关闭(重置?),在现实的应用中,我后台处理数据的时间可能很长,也许3分钟,也许5分钟,客户也愿意等待,那么我完全可以把连接时长设置的多一些。为了解决这个问题,我找了很久,网上大多数说的是怎么缩短timeout的时间,而且很多都是自己调用全局的setTimeout()函数来控制的,说nodeJs没有提供相应的API。直到昨天才发现,原来nodeJs的Http库,有一个setTimeout()的函数,可以解决这个问题,(我本机的,0.6版是没有这个函数的),这篇文章有提及: http://contourline.wordpress.com/2011/03/30/preventing-server-timeout-in-node-js/
说明:
调用nodeJs API, http.createServer()返回的Server对象,有一个setTimeout()方法,可以传入你想要的连接时长,默认是1200000(即2分钟),改成0表示不会timeout。而response对象,也有一个setTimeout()方法,我不知道两者有什么区别,但是我的理解是server.setTimeout()是全局的,response.setTimeout()只针对本次request。
代码:
对于expressJs,相关代码是:
var server = http.createServer(app);
server.setTimeout(0);
server.listen(app.get('port'), function () {
console.log('Express server listening on port ' + app.get('port'));
});
对于restify,相关代码是:
server.server.setTimeout(0);
server.listen(8080, function () {
console.log('%s listening at %s', server.name, server.url);
});
❷ Nodejs中使用request
在Node.js中,处理HTTP请求是一项基础且重要的任务。本文将介绍如何使用request库,包括异步和同步请求的实现,以及如何在Node.js环境中构建和管理HTTP服务。
首先,我们来谈谈异步请求。使用request库,你需要进行以下步骤:
1. 安装request模块:`npm install request`
2. 对于GET和POST请求,异步request的用法有所不同。例如,发送GET请求:`request.get('http://example.com', callback)`,而POST请求则需要传递一个JSON对象:`request.post('http://example.com', {json: {key: 'value'}}, callback)`。
同步request的实现更为直接,如sync-request,但请注意,它可能不是最佳实践,因为它会阻塞Node.js事件循环。同步请求的安装和使用方法与异步类似,但返回的是完整的response对象。
在Node.js中,处理HTTP请求涉及到Request(req)和Response(res)对象。你可以通过`http`模块创建一个服务器,监听本地IP(127.0.0.1)或localhost。定义路由时,需要确定方法(GET或POST)、URL规则以及输入和输出的格式。例如,通过`req.method`和`req.url`获取请求方法和URL,然后进行相应的处理。
querystring在HTTP请求中扮演着传递参数的角色,它可以帮助解析URL中的查询字符串。虽然hash(#后面的内容)不能被服务器获取,但可以用于实现动态网页。数据的结构化和非结构化在编程中至关重要,尽量使用结构化的数据便于处理。
返回数据时,利用`res.writeHead()`设置状态码、内容类型和body。例如,返回JSON数据时,`res.end(JSON.stringify(data))`。对于HTML数据,需要设置`Content-type`为`text/html`。
获取Request Body时,由于数据通常是通过流传输的,你需要在浏览器接收完整内容后再进行处理。流可以用于处理视频或大文件,浏览器会自动接收并分段处理。
总的来说,Node.js中的HTTP请求处理涉及模块的安装、请求类型的区别、路由设置、参数解析、响应数据和流处理等环节。通过这些步骤,你可以有效地管理你的HTTP服务。
❸ HTML js怎么发送HTTP get请求
请参照下面的例子:
/*URL可以随意改*/
String uriAPI = "http://192.168.1.100:8080/test/test.jsp?u=wangyi&p=456";
/*建立HTTP Get对象*/
HttpGet httpRequest = new HttpGet(uriAPI);
try
{
/*发送请求并等待响应*/
HttpResponse httpResponse = new DefaultHttpClient().execute(httpRequest);
/*若状态码为200 ok*/
if(httpResponse.getStatusLine().getStatusCode() == 200)
{
/*读*/
String strResult = EntityUtils.toString(httpResponse.getEntity());
/*去没有用的字符*/
strResult = eregi_replace("( | | | )","",strResult);
mTextView1.setText(strResult);
}
else
{
mTextView1.setText("Error Response: "+httpResponse.getStatusLine().toString());
}
}
catch (ClientProtocolException e)
{
mTextView1.setText(e.getMessage().toString());
e.printStackTrace();
}
catch (IOException e)
{
mTextView1.setText(e.getMessage().toString());
e.printStackTrace();
}
catch (Exception e)
{
mTextView1.setText(e.getMessage().toString());
e.printStackTrace();
}