你想創(chuàng)建一個(gè) HTTP 客戶端。
在這個(gè)方法中,我們將使用 HTTP 庫(kù)。我們將從一個(gè)簡(jiǎn)單的客戶端 GET 請(qǐng)求示例返回計(jì)算機(jī)的外部 IP 。
http = require 'http'
http.get { host: 'www.google.com' }, (res) ->
console.log res.statusCode
get 函數(shù),從 node.js's http 模塊,發(fā)出一個(gè) GET 請(qǐng)求到一個(gè) http 服務(wù)器。響應(yīng)是以回調(diào)的形式,我們可以在一個(gè)函數(shù)中處理。這個(gè)例子僅僅輸出響應(yīng)狀態(tài)代碼。檢查一下:
$ coffee http-client.coffee
200
如果你是在一個(gè)類似局域網(wǎng)的依賴于 NAT 的網(wǎng)絡(luò)中,你可能會(huì)面臨找出外部 IP 地址的問(wèn)題。讓我們?yōu)檫@個(gè)問(wèn)題寫(xiě)一個(gè)小的 coffeescript 。
http = require 'http'
http.get { host: 'checkip.dyndns.org' }, (res) ->
data = ''
res.on 'data', (chunk) ->
data += chunk.toString()
res.on 'end', () ->
console.log data.match(/([0-9]+\.){3}[0-9]+/)[0]
我們可以從監(jiān)聽(tīng) 'data' 事件的結(jié)果對(duì)象中得到數(shù)據(jù),知道它結(jié)束了一次 'end' 的觸發(fā)事件。當(dāng)這種情況發(fā)生時(shí),我們可以做一個(gè)簡(jiǎn)單的正則表達(dá)式來(lái)匹配我們提取的 IP 地址。試一試:
$ coffee http-client.coffee
123.123.123.123
請(qǐng)注意 http.get 是 http.request 的快捷方式。后者允許您使用不同的方法發(fā)出 HTTP 請(qǐng)求,如 POST 或 PUT。
在這個(gè)問(wèn)題上的 API 和整體信息,檢查 node.js's http 和 https 文檔頁(yè)面。此外, HTTP spec 可能派上用場(chǎng)。