亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

NodeJS學習筆記之網絡編程

2019-11-20 14:18:06
字體:
來源:轉載
供稿:網友

Node提供豐富的網絡編程模塊

Node模塊 協議
net TCP
dgram UDP
http HTTP
https HTTPS

TCP服務事件分為下面兩類

(1)、服務器事件

對于通過net.createServer()創建的服務器而言,它是一個EventEmitter實例,自定義事件有以下幾種:

listening :在調用listen()綁定端口或Domain Socket后觸發,簡寫為server.listen(port, listener),通過第二個參數傳入。

connection :每個客戶端套接字連接到 服務器 時觸發,簡潔寫法為通過net.createServer(),最后一個參數傳遞。

close :當服務器關閉時觸發,在調用server.close()后,服務器將停止接受新的套接字連接,但保持當前存在的連接,等待所有連接斷開后,會觸發該事件。

error :當服務器發生異常時,將會觸發該事件。

(2)、連接事件

服務器可以同時與多個客戶端保持連接,對于每個連接而言是典型的可寫可讀Stream對象。Stream對象可以用于服務端和客戶端之間的通信,既可以通過data事件從一端讀取另一端發來的數據,也可以通過write()方法從一端向另一端發送數據。

data :當一端調用write()發送數據時,另一端會觸發data事件,事件傳遞的數據就是write()發送的數據

end :當連接中的任意一端發送FIN數據時,將會觸發該事件。

connect :該事件用于 客戶端 ,當套接字與服務器連接成功時會觸發。

drain :當任意一端調用write()發送數據時,當前這端觸發該事件。

error :當異常發送

close :當套接字完全關閉時觸發

timeout :當一定時間后連接不再活躍時,觸發該事件通知用戶該連接被閑置了。

TCP針對網絡中的小數據包有一定優化策略:Nagle算法,當數據達到一定量后才觸發。

UDP服務

UDP稱為用戶數據包協議,其不是面向連接的服務。Node中UDP只是一個EventEmitter實例,而非Stream的實例,具備以下自定義事件:

(1) message :當UDP套接字監聽網卡端口后,接受消息時觸發,觸發攜帶的數據為消息Buffer對象和一個遠程地址信息。

(2) listening :當UDP套接字開始偵聽時觸發該事件。

(3) close :調用close()方法時觸發該事件,并不再觸發message事件。若需再次觸發message事件,需要重新綁定。

(4) error :當異常發生時觸發,若不監聽直接拋出,使進程退出。

HTTP服務

Node中http模塊繼承自tcp服務器(net模塊),它能與多個客戶端保持連接,由于其不為每個連接創建線程,保持很低的內存占用,所以能實現高并發。HTTP服務和TCP服務區別在于,在開啟keepalive之后,一個TCP會話可以用于多次請求和響應。TCP服務以connection為單位進行服務,HTTP服務以request單位進行服務。http模塊是將connection到request的過程進行封裝。

http模塊將連接所用的套接字的讀寫抽象為ServerRequest和ServerResponse對象,分別對應請求和響應操作。

(1) HTTP請求

對于TCP連接的讀操作,http模塊將其封裝為ServerRequest對象。如報頭部分req.method、req.url、req.headers,報文體數據部分抽象為一個只讀的流對象,若業務邏輯需要讀取報文體中的數據,則需要這個數據流結束后才能進行操作。

(2) HTTP響應

HTTP響應封裝了底層連接的寫操作,可以將其看成一個可寫的流對象。

響應報文頭部信息方法:res.setHeader()和res.writeHeader()方法,可以多次setHeader進行設置,但必須調用writeHeader寫入連接才生效。

報文體部分方法:res.write()和res.end()方法

(3) HTTP服務端事件

connection :客戶端與服務端建立TCP連接時,觸發一次connection事件

request :建立TCP連接后,http模塊底層將數據流中抽象出HTTP請求和HTTP響應,當請求數據發送到服務端,在解析出HTTP請求頭后觸發該事件;在res.end()后,TCP連接可用于下一次請求。

close :調用server.close方法停止接收新的連接,已有的連接都斷開時觸發該事件。

checkContinue :某些客戶端在發送較大數據時,先發送一個頭部帶有Expect: 100-continue的請求到服務器,服務觸發該事件;

connect :當客戶端發起CONNECT請求時觸發

upgrade :當客戶端要求升級連接的協議時,需要和服務端協商,客戶端會在請求頭中帶上Updagrade字段

clientError :連接的客戶端發送錯誤,錯誤傳到服務端此時觸發該事件

(4) HTTP客戶端

http模塊提供http.request(options, connect),用于構造HTTP客戶端。

HTTP客戶端和服務端類似,在ClientRequest對象中,它的事件叫做response,ClientRequest在解析響應報文的時,一解析完響應頭就觸發response事件,同時傳遞一個響應對象ClientResponse供操作,后續響應報文以只讀流的方式提供。

(5) HTTP客戶端事件

response :與服務端的request事件對應的客戶端在請求發出后得到響應時觸發該事件。

socket :當底層連接池中建立的連接分配給當前請求對象時觸發;

connect :當客戶端向服務器發送CONNECT請求時,若服務端響應了200狀態碼,客戶端將會觸發該事件。

upgrade :客戶端享服務端發送Upgrade請求時,若服務端響應了101 Switching Protocols狀態,客戶端將會觸發該事件。

continue :客戶端向服務端發起Expect: 100-continue頭信息后,以試圖發送較大數據,若服務端響應100 continue狀態,服務端將觸發該事件

WebSocket服務

WebSocket最早是作為HTML5重要特性出現的,相比HTTP有以下優點:

(1) 客戶端和服務端只建立一次TCP連接,可以使用更少的連接

(2) WebSocket服務端可以推送數據到客戶端,這遠比HTTP請求響應模式更靈活、更高效

(3) 更輕量級的協議頭,減少數據傳輸

Node中沒有內置WebSocket的庫,但社區的ws模塊封裝了WebSocket的底層實現如著名的socket.io

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久99精品久久久久久青青91| 亚洲精品suv精品一区二区| 欧日韩不卡在线视频| 国产91ⅴ在线精品免费观看| 亚洲国产欧美一区二区丝袜黑人| 亚洲无限av看| 国外色69视频在线观看| 亚洲丁香久久久| 91久久精品国产91性色| 91精品国产综合久久香蕉最新版| 成人性生交大片免费观看嘿嘿视频| 日韩av有码在线| 按摩亚洲人久久| 亚洲精品99久久久久| 97精品伊人久久久大香线蕉| 久久久久久久网站| 一区二区在线视频| 国产精品国模在线| 国产精品日韩在线观看| 久热国产精品视频| 亚洲精品ady| 国产精品日韩久久久久| 色综合久久久888| 日本午夜人人精品| 38少妇精品导航| 欧美精品电影在线| 色999日韩欧美国产| 国产成人极品视频| 亚洲人成在线观看网站高清| 亚洲片国产一区一级在线观看| 欧美黑人又粗大| 欧美美女操人视频| 91色琪琪电影亚洲精品久久| 国产在线精品播放| 欧美亚洲国产另类| 都市激情亚洲色图| 疯狂蹂躏欧美一区二区精品| 国产精品 欧美在线| 成人美女av在线直播| 欧美极度另类性三渗透| 久久人人爽人人爽人人片av高请| 国语自产精品视频在线看一大j8| 欧美日韩国产精品专区| 国产视频999| 久久久午夜视频| 欧美日韩国产999| 91天堂在线视频| 国产乱肥老妇国产一区二| 久久夜精品香蕉| 97国产精品人人爽人人做| 欧美成aaa人片在线观看蜜臀| 国产精品日日做人人爱| 国产自产女人91一区在线观看| 91精品视频在线播放| 久久99精品久久久久久青青91| 日韩精品免费电影| 国内精品中文字幕| 2019国产精品自在线拍国产不卡| 亚洲自拍偷拍区| 国产亚洲美女精品久久久| 日产日韩在线亚洲欧美| 精品视频在线观看日韩| 日本19禁啪啪免费观看www| 亚洲福利视频网站| 国产一区二区日韩| 精品久久久久久中文字幕大豆网| 亚洲伊人成综合成人网| 欧美怡红院视频一区二区三区| 色综合老司机第九色激情| 久久久久99精品久久久久| 欧美高清在线观看| 97成人精品视频在线观看| 孩xxxx性bbbb欧美| 亚洲影院高清在线| 最近2019年日本中文免费字幕| 欧美亚洲在线观看| 69**夜色精品国产69乱| 国产在线视频一区| 国产一区二区动漫| 97**国产露脸精品国产| 欧美成人高清视频| 成人免费网站在线观看| 亚洲自拍高清视频网站| 国产福利视频一区二区| 国产91在线播放九色快色| 精品福利樱桃av导航| 中文字幕亚洲字幕| 欧美精品videosex牲欧美| 亚洲精品久久久久久久久久久| 国产www精品| 91精品国产九九九久久久亚洲| 日韩视频永久免费观看| 日韩av在线天堂网| 久久在线免费视频| 成人h猎奇视频网站| 国产欧美久久一区二区| 伊人亚洲福利一区二区三区| 97香蕉超级碰碰久久免费软件| 亚洲欧美日韩一区在线| 国产成人黄色av| 2019中文字幕在线| 欧美疯狂做受xxxx高潮| 国产精品白嫩美女在线观看| 成人国产精品久久久| 久久久久亚洲精品| 国产精品com| 国产成人久久精品| 亚洲国产天堂久久综合网| 欧美乱妇40p| 97在线精品国自产拍中文| 久久视频精品在线| www.日韩免费| 欧美成人免费一级人片100| 91精品国产一区| 亚洲自拍偷拍色图| 亚洲欧美日韩精品久久亚洲区| 精品视频在线观看日韩| 国产成人精品免高潮在线观看| 在线视频欧美日韩| 国产亚洲a∨片在线观看| 97在线视频观看| 成人欧美一区二区三区在线湿哒哒| 91在线中文字幕| 亚洲性日韩精品一区二区| 中文字幕v亚洲ⅴv天堂| 黑人巨大精品欧美一区二区三区| 亚洲а∨天堂久久精品喷水| 成人春色激情网| 欧美成人精品一区二区| 国产一区视频在线| 日韩专区在线播放| 国产精品欧美激情在线播放| 91精品久久久久| 国产精品极品尤物在线观看| 亚洲免费电影一区| 日韩av一区二区在线| 国产精品久久久久久久久久ktv| 色综合久久悠悠| 国产欧美在线观看| 久久久久久久亚洲精品| 羞羞色国产精品| 国产91网红主播在线观看| 亚洲精品永久免费| 日韩欧美中文第一页| 久久精品视频在线播放| 久久久久久999| xx视频.9999.com| 欧洲亚洲免费在线| 精品亚洲国产成av人片传媒| 另类图片亚洲另类| 日韩高清电影好看的电视剧电影| 日韩精品视频在线观看免费| 在线亚洲男人天堂| 日韩欧美国产黄色| 在线日韩第一页| 亚洲视频免费一区| 91精品视频一区| 国色天香2019中文字幕在线观看| 91在线视频免费| 欧美日韩亚洲精品内裤| 日产精品99久久久久久| 欧美风情在线观看| 午夜精品久久久久久久99热浪潮| 国产婷婷97碰碰久久人人蜜臀|