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