❶ 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();
}