發(fā)布時(shí)間:2020-07-10
什么是WebSocket?其實(shí),HTTP和WebSocket都是客戶端-服務(wù)器通信中使用的通信協(xié)議。WebSocket壓力測(cè)試怎么做?有哪些支持WebSocket協(xié)議的壓力測(cè)試工具?今天小編就帶大家來了解一下吧!
HTTP協(xié)議
HTTP是單向的,客戶端發(fā)送請(qǐng)求,服務(wù)器發(fā)送響應(yīng)。舉例來說,當(dāng)客戶端向服務(wù)器發(fā)送請(qǐng)求時(shí),該請(qǐng)求以HTTP或HTTPS的形式發(fā)送,在接收到請(qǐng)求后,服務(wù)器會(huì)將響應(yīng)發(fā)送給客戶端。每個(gè)請(qǐng)求都與一個(gè)對(duì)應(yīng)的響應(yīng)相關(guān)聯(lián),在發(fā)送響應(yīng)后客戶端與服務(wù)器的連接會(huì)被關(guān)閉。每個(gè)HTTP或HTTPS請(qǐng)求每次都會(huì)新建與服務(wù)器的連接,并且在獲得響應(yīng)后,連接將自行終止。
HTTP是在TCP之上運(yùn)行的無狀態(tài)協(xié)議,TCP是一種面向連接的協(xié)議,它使用三向握手方法保證數(shù)據(jù)包傳輸?shù)膫鬟f并重新傳輸丟失的數(shù)據(jù)包。
HTTP可以運(yùn)行在任何可靠的面向連接的協(xié)議(例如TCP,SCTP)的上層。當(dāng)客戶端將HTTP請(qǐng)求發(fā)送到服務(wù)器時(shí),客戶端和服務(wù)器之間將打開TCP連接,并且在收到響應(yīng)后,TCP連接將終止,每個(gè)HTTP請(qǐng)求都會(huì)建立單獨(dú)的TCP連接到服務(wù)器,例如如果客戶端向服務(wù)器發(fā)送10個(gè)請(qǐng)求,則將打開10個(gè)單獨(dú)的HTTP連接。并在獲得響應(yīng)后關(guān)閉。
HTTP協(xié)議的長連接和短連接,實(shí)質(zhì)上是TCP協(xié)議的長連接和短連接。
每個(gè)HTTP連接完成后,其對(duì)應(yīng)的TCP連接并不是每次都會(huì)關(guān)閉。從 HTTP/1.1起,默認(rèn)使用長連接,用以保持連接特性。使用長連接的HTTP協(xié)議,會(huì)在響應(yīng)頭有加入這個(gè)頭部字段:Connection:keep-alive
在使用長連接的情況下,當(dāng)一個(gè)網(wǎng)頁打開完成后,客戶端和服務(wù)器之間用于傳輸HTTP數(shù)據(jù)的TCP連接不會(huì)關(guān)閉,如果客戶端再次訪問這個(gè)服務(wù)器上的網(wǎng)頁,會(huì)繼續(xù)使用這一條已經(jīng)建立的連接。Keep-Alive不會(huì)永久保持連接,它有一個(gè)保持時(shí)間,可以在不同的服務(wù)器軟件(如Apache,Nginx,Nginx中這個(gè)默認(rèn)時(shí)間是 75s)中設(shè)定這個(gè)時(shí)間。實(shí)現(xiàn)長連接要客戶端和服務(wù)端都支持長連接。
HTTP屬于應(yīng)用層協(xié)議,在傳輸層使用TCP協(xié)議,在網(wǎng)絡(luò)層使用IP協(xié)議。IP協(xié)議主要解決網(wǎng)絡(luò)路由和尋址問題,TCP協(xié)議主要解決如何在`IP層之上可靠的傳遞數(shù)據(jù)包,使在網(wǎng)絡(luò)上的另一端收到發(fā)端發(fā)出的所有包,并且順序與發(fā)出順序一致。TCP有可靠,面向連接的特點(diǎn)。
HTTP消息信息是用ASCII編碼的,每個(gè)HTTP請(qǐng)求消息均包含HTTP協(xié)議版本(HTTP/1.1,HTTP/2),HTTP方法(GET/POST等),HTTP標(biāo)頭(Content-Type,Content-Length),主機(jī)信息等。以及包含要傳輸?shù)椒?wù)器的實(shí)際消息的正文(請(qǐng)求主體)。HTTP標(biāo)頭的大小從200字節(jié)到2KB不等,HTTP標(biāo)頭的常見大小是700-800字節(jié)。當(dāng)Web應(yīng)用程序在客戶端使用更多cookie和其他工具擴(kuò)展代理的存儲(chǔ)功能時(shí),它將減少HTTP標(biāo)頭的荷載。
什么是WebSocket,它與HTTP有何不同?
WebSocket協(xié)議
WebSocket是雙向的,在客戶端-服務(wù)器通信的場(chǎng)景中使用的全雙工協(xié)議,與HTTP不同,它以ws://或wss://開頭。它是一個(gè)有狀態(tài)協(xié)議,這意味著客戶端和服務(wù)器之間的連接將保持活動(dòng)狀態(tài),直到被任何一方(客戶端或服務(wù)器)終止。在通過客戶端和服務(wù)器中的任何一方關(guān)閉連接之后,連接將從兩端終止。
讓我們以客戶端-服務(wù)器通信為例,每當(dāng)我們啟動(dòng)客戶端和服務(wù)器之間的連接時(shí),客戶端-服務(wù)器進(jìn)行握手隨后創(chuàng)建一個(gè)新的連接,該連接將保持活動(dòng)狀態(tài),直到被他們中的任何一方終止。建立連接并保持活動(dòng)狀態(tài)后,客戶端和服務(wù)器將使用相同的連接通道進(jìn)行通信,直到連接終止。
新建的連接被稱為WebSocket。一旦通信鏈接建立和連接打開后,消息交換將以雙向模式進(jìn)行,客戶端-服務(wù)器之間的連接會(huì)持續(xù)存在。如果其中任何一方(客戶端服務(wù)器)宕掉或主動(dòng)關(guān)閉連接,則雙方均將關(guān)閉連接。套接字的工作方式與HTTP的工作方式略有不同,狀態(tài)代碼101表示W(wǎng)ebSocket中的交換協(xié)議。
使用WebSocket的場(chǎng)景
即時(shí)Web應(yīng)用程序:即時(shí)Web應(yīng)用程序使用一個(gè)Web套接字在客戶端顯示數(shù)據(jù),這些數(shù)據(jù)由后端服務(wù)器連續(xù)發(fā)送。在WebSocket中,數(shù)據(jù)被連續(xù)推送/傳輸?shù)揭呀?jīng)打開的同一連接中,這就是為什么WebSocket更快并提高了應(yīng)用程序性能的原因。例如在交易網(wǎng)站或比特幣交易中,這是最不穩(wěn)定的事情,它用于顯示價(jià)格波動(dòng),數(shù)據(jù)被后端服務(wù)器使用Web套接字通道連續(xù)推送到客戶端。
游戲應(yīng)用程序:在游戲應(yīng)用程序中,你可能會(huì)注意到,服務(wù)器會(huì)持續(xù)接收數(shù)據(jù),而不會(huì)刷新用戶界面。屏幕上的用戶界面會(huì)自動(dòng)刷新,而且不需要建立新的連接,因此在WebSocket游戲應(yīng)用程序中非常有幫助。
聊天應(yīng)用程序:聊天應(yīng)用程序僅使用WebSocket建立一次連接,便能在訂閱戶之間交換,發(fā)布和廣播消息。它重復(fù)使用相同的WebSocket連接,用于發(fā)送和接收消息以及一對(duì)一的消息傳輸。
不能使用WebSocket的場(chǎng)景
如果我們需要通過網(wǎng)絡(luò)傳輸?shù)娜魏螌?shí)時(shí)更新或連續(xù)數(shù)據(jù)流,則可以使用WebSocket。如果我們要獲取舊數(shù)據(jù),或者只想獲取一次數(shù)據(jù)供應(yīng)用程序使用,則應(yīng)該使用HTTP協(xié)議,不需要很頻繁或僅獲取一次的數(shù)據(jù)可以通過簡(jiǎn)單的HTTP請(qǐng)求查詢,因此在這種情況下最好不要使用WebSocket。
注意:如果僅加載一次數(shù)據(jù),則RESTful Web服務(wù)足以從服務(wù)器獲取數(shù)據(jù)。
WebSocket技術(shù)應(yīng)用特別廣泛,并發(fā)測(cè)試必不可少;壓力測(cè)試工具PerformanceRunner是國內(nèi)領(lǐng)先的支持http、https、websocket、tcp/ip、MQ等各種協(xié)議、10萬+海量并發(fā)、精準(zhǔn)可靠的性能測(cè)試工具,極大地降低了應(yīng)用系統(tǒng)運(yùn)行風(fēng)險(xiǎn)。支持常用的HTTP,HTTPS,TCP/IP,UDP;WebService,MQ,Socket等多種協(xié)議混合測(cè)試;模擬多種測(cè)試場(chǎng)景,單場(chǎng)景,多腳本混合場(chǎng)景,百分比分配模式,遞增模型,穩(wěn)定性模型等;場(chǎng)景設(shè)計(jì)視圖可為場(chǎng)景添加虛擬用戶的數(shù)量以及虛擬用戶啟動(dòng)、停止的規(guī)則;可建立基準(zhǔn)、負(fù)載、配置、穩(wěn)定性等單場(chǎng)景和組合場(chǎng)景。
推薦閱讀:
測(cè)試MySQL性能的工具有哪些?MySQL性能測(cè)試工具對(duì)比
性能壓測(cè)概念及性能壓測(cè)工具對(duì)比選型
企業(yè)為什么需要做全鏈路壓測(cè)?全鏈路壓測(cè)能解決什么問題?
接口壓力測(cè)試怎么才能做好?接口壓力測(cè)試要點(diǎn)
cs項(xiàng)目怎么做性能測(cè)試?cs性能測(cè)試跟bs有什么區(qū)別?
服務(wù)器壓力測(cè)試是什么?服務(wù)器壓力測(cè)試工具有哪些?
軟件性能測(cè)試指標(biāo)有哪些?做性能測(cè)試前注意事項(xiàng)
電話咨詢,400-035-7887,安排專業(yè)技術(shù)售前給您解答(產(chǎn)品試用、技術(shù)交流、服務(wù)咨詢和商務(wù)報(bào)價(jià))。
您的信息已成功提交!
我們的客服人員稍后會(huì)與您聯(lián)系