產(chǎn)品體驗(yàn)中心 下載與支持 產(chǎn)品社區(qū) 澤眾云   合作代理 |  咨詢(xún)電話(huà):400-035-7887/021-6072 5088

什么是WebSocket?有哪些支持WebSocket協(xié)議的壓力測(cè)試工具?

發(fā)布時(shí)間:2020-07-10

什么是WebSocket?其實(shí),HTTP和WebSocket都是客戶(hù)端-服務(wù)器通信中使用的通信協(xié)議。WebSocket壓力測(cè)試怎么做?有哪些支持WebSocket協(xié)議的壓力測(cè)試工具?今天小編就帶大家來(lái)了解一下吧!

壓力測(cè)試

HTTP協(xié)議

HTTP是單向的,客戶(hù)端發(fā)送請(qǐng)求,服務(wù)器發(fā)送響應(yīng)。舉例來(lái)說(shuō),當(dāng)客戶(hù)端向服務(wù)器發(fā)送請(qǐng)求時(shí),該請(qǐng)求以HTTP或HTTPS的形式發(fā)送,在接收到請(qǐng)求后,服務(wù)器會(huì)將響應(yīng)發(fā)送給客戶(hù)端。每個(gè)請(qǐng)求都與一個(gè)對(duì)應(yīng)的響應(yīng)相關(guān)聯(lián),在發(fā)送響應(yīng)后客戶(hù)端與服務(wù)器的連接會(huì)被關(guān)閉。每個(gè)HTTP或HTTPS請(qǐng)求每次都會(huì)新建與服務(wù)器的連接,并且在獲得響應(yīng)后,連接將自行終止。

HTTP是在TCP之上運(yùn)行的無(wú)狀態(tài)協(xié)議,TCP是一種面向連接的協(xié)議,它使用三向握手方法保證數(shù)據(jù)包傳輸?shù)膫鬟f并重新傳輸丟失的數(shù)據(jù)包。

HTTP可以運(yùn)行在任何可靠的面向連接的協(xié)議(例如TCP,SCTP)的上層。當(dāng)客戶(hù)端將HTTP請(qǐng)求發(fā)送到服務(wù)器時(shí),客戶(hù)端和服務(wù)器之間將打開(kāi)TCP連接,并且在收到響應(yīng)后,TCP連接將終止,每個(gè)HTTP請(qǐng)求都會(huì)建立單獨(dú)的TCP連接到服務(wù)器,例如如果客戶(hù)端向服務(wù)器發(fā)送10個(gè)請(qǐng)求,則將打開(kāi)10個(gè)單獨(dú)的HTTP連接。并在獲得響應(yīng)后關(guān)閉。

HTTP協(xié)議的長(zhǎng)連接和短連接,實(shí)質(zhì)上是TCP協(xié)議的長(zhǎng)連接和短連接。

每個(gè)HTTP連接完成后,其對(duì)應(yīng)的TCP連接并不是每次都會(huì)關(guān)閉。從 HTTP/1.1起,默認(rèn)使用長(zhǎng)連接,用以保持連接特性。使用長(zhǎng)連接的HTTP協(xié)議,會(huì)在響應(yīng)頭有加入這個(gè)頭部字段:Connection:keep-alive

在使用長(zhǎng)連接的情況下,當(dāng)一個(gè)網(wǎng)頁(yè)打開(kāi)完成后,客戶(hù)端和服務(wù)器之間用于傳輸HTTP數(shù)據(jù)的TCP連接不會(huì)關(guān)閉,如果客戶(hù)端再次訪問(wèn)這個(gè)服務(wù)器上的網(wǎng)頁(yè),會(huì)繼續(xù)使用這一條已經(jīng)建立的連接。Keep-Alive不會(huì)永久保持連接,它有一個(gè)保持時(shí)間,可以在不同的服務(wù)器軟件(如Apache,Nginx,Nginx中這個(gè)默認(rèn)時(shí)間是 75s)中設(shè)定這個(gè)時(shí)間。實(shí)現(xiàn)長(zhǎng)連接要客戶(hù)端和服務(wù)端都支持長(zhǎng)連接。

HTTP屬于應(yīng)用層協(xié)議,在傳輸層使用TCP協(xié)議,在網(wǎng)絡(luò)層使用IP協(xié)議。IP協(xié)議主要解決網(wǎng)絡(luò)路由和尋址問(wèn)題,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)頭的常見(jiàn)大小是700-800字節(jié)。當(dāng)Web應(yīng)用程序在客戶(hù)端使用更多cookie和其他工具擴(kuò)展代理的存儲(chǔ)功能時(shí),它將減少HTTP標(biāo)頭的荷載。

什么是WebSocket,它與HTTP有何不同?

WebSocket協(xié)議

WebSocket是雙向的,在客戶(hù)端-服務(wù)器通信的場(chǎng)景中使用的全雙工協(xié)議,與HTTP不同,它以ws://或wss://開(kāi)頭。它是一個(gè)有狀態(tài)協(xié)議,這意味著客戶(hù)端和服務(wù)器之間的連接將保持活動(dòng)狀態(tài),直到被任何一方(客戶(hù)端或服務(wù)器)終止。在通過(guò)客戶(hù)端和服務(wù)器中的任何一方關(guān)閉連接之后,連接將從兩端終止。

讓我們以客戶(hù)端-服務(wù)器通信為例,每當(dāng)我們啟動(dòng)客戶(hù)端和服務(wù)器之間的連接時(shí),客戶(hù)端-服務(wù)器進(jìn)行握手隨后創(chuàng)建一個(gè)新的連接,該連接將保持活動(dòng)狀態(tài),直到被他們中的任何一方終止。建立連接并保持活動(dòng)狀態(tài)后,客戶(hù)端和服務(wù)器將使用相同的連接通道進(jìn)行通信,直到連接終止。

新建的連接被稱(chēng)為WebSocket。一旦通信鏈接建立和連接打開(kāi)后,消息交換將以雙向模式進(jìn)行,客戶(hù)端-服務(wù)器之間的連接會(huì)持續(xù)存在。如果其中任何一方(客戶(hù)端服務(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套接字在客戶(hù)端顯示數(shù)據(jù),這些數(shù)據(jù)由后端服務(wù)器連續(xù)發(fā)送。在WebSocket中,數(shù)據(jù)被連續(xù)推送/傳輸?shù)揭呀?jīng)打開(kāi)的同一連接中,這就是為什么WebSocket更快并提高了應(yīng)用程序性能的原因。例如在交易網(wǎng)站或比特幣交易中,這是最不穩(wěn)定的事情,它用于顯示價(jià)格波動(dòng),數(shù)據(jù)被后端服務(wù)器使用Web套接字通道連續(xù)推送到客戶(hù)端。

游戲應(yīng)用程序:在游戲應(yīng)用程序中,你可能會(huì)注意到,服務(wù)器會(huì)持續(xù)接收數(shù)據(jù),而不會(huì)刷新用戶(hù)界面。屏幕上的用戶(hù)界面會(huì)自動(dòng)刷新,而且不需要建立新的連接,因此在WebSocket游戲應(yīng)用程序中非常有幫助。

聊天應(yīng)用程序:聊天應(yīng)用程序僅使用WebSocket建立一次連接,便能在訂閱戶(hù)之間交換,發(fā)布和廣播消息。它重復(fù)使用相同的WebSocket連接,用于發(fā)送和接收消息以及一對(duì)一的消息傳輸。

不能使用WebSocket的場(chǎng)景

如果我們需要通過(guò)網(wǎng)絡(luò)傳輸?shù)娜魏螌?shí)時(shí)更新或連續(xù)數(shù)據(jù)流,則可以使用WebSocket。如果我們要獲取舊數(shù)據(jù),或者只想獲取一次數(shù)據(jù)供應(yīng)用程序使用,則應(yīng)該使用HTTP協(xié)議,不需要很頻繁或僅獲取一次的數(shù)據(jù)可以通過(guò)簡(jiǎn)單的HTTP請(qǐng)求查詢(xún),因此在這種情況下最好不要使用WebSocket。

注意:如果僅加載一次數(shù)據(jù),則RESTful Web服務(wù)足以從服務(wù)器獲取數(shù)據(jù)。

WebSocket技術(shù)應(yīng)用特別廣泛,并發(fā)測(cè)試必不可少;壓力測(cè)試工具PerformanceRunner是國(guó)內(nèi)領(lǐng)先的支持http、https、websocket、tcp/ip、MQ等各種協(xié)議、10萬(wàn)+海量并發(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)景添加虛擬用戶(hù)的數(shù)量以及虛擬用戶(hù)啟動(dòng)、停止的規(guī)則;可建立基準(zhǔn)、負(fù)載、配置、穩(wěn)定性等單場(chǎng)景和組合場(chǎng)景。

推薦閱讀:

測(cè)試MySQL性能的工具有哪些?MySQL性能測(cè)試工具對(duì)比

性能壓測(cè)概念及性能壓測(cè)工具對(duì)比選型

企業(yè)為什么需要做全鏈路壓測(cè)?全鏈路壓測(cè)能解決什么問(wèn)題?

接口壓力測(cè)試怎么才能做好?接口壓力測(cè)試要點(diǎn)

cs項(xiàng)目怎么做性能測(cè)試?cs性能測(cè)試跟bs有什么區(qū)別?

服務(wù)器壓力測(cè)試是什么?服務(wù)器壓力測(cè)試工具有哪些?

軟件性能測(cè)試指標(biāo)有哪些?做性能測(cè)試前注意事項(xiàng)

怎樣進(jìn)行數(shù)據(jù)庫(kù)性能測(cè)試?數(shù)據(jù)庫(kù)壓力測(cè)試的幾個(gè)步驟

大型web網(wǎng)站壓力測(cè)試技巧及常見(jiàn)的web頁(yè)面性能測(cè)試工具

本文內(nèi)容不用于商業(yè)目的,如涉及知識(shí)產(chǎn)權(quán)問(wèn)題,請(qǐng)權(quán)利人聯(lián)系SPASVO小編(021-60725088-8054),我們將立即處理,馬上刪除。
滬ICP備07036474號(hào) 2003-2024 版權(quán)所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd.
微信
咨詢(xún)

添加客服微信 歡迎咨詢(xún)測(cè)試工具和測(cè)試服務(wù)

微信客服
問(wèn)題
反饋
產(chǎn)品
畫(huà)冊(cè)

掃描二維碼下載澤眾軟件企業(yè)宣傳冊(cè)

產(chǎn)品畫(huà)冊(cè)
返回
頂部

方案咨詢(xún)

×
提交信息

電話(huà)咨詢(xún),400-035-7887,安排專(zhuān)業(yè)技術(shù)售前給您解答(產(chǎn)品試用、技術(shù)交流、服務(wù)咨詢(xún)和商務(wù)報(bào)價(jià))。

您的信息已成功提交!

我們的客服人員稍后會(huì)與您聯(lián)系