jmeter中websocket介面測試

2022-03-20 17:12:55 字數 2951 閱讀 2450

websocket是乙個持久化的協議,相對於http這種非持久的協議來說;

http協議

http的生命週期通過 request 來界定,也就是乙個 request 乙個 response ,那麼在 http1.0 中,這次http請求就結束了。

在http1.1中進行了改進,使得有乙個keep-alive,也就是說,在乙個http連線中,可以傳送多個request,接收多個response。但是請記住 request = response , 在http中永遠是這樣,也就是說乙個request只能有乙個response。而且這個response也是被動的,不能主動發起。

websocket協議:

websocket是一種雙向通訊協議。在建立連線後,websocket伺服器端和客戶端都能主動向對方傳送或接收資料,就像socket一樣;

websocket需要像tcp一樣,先建立連線,連線成功後才能相互通訊。

websocket只需要經過一次http請求,就可以做到源源不斷的資訊傳送了(在程式設計中,這種設計叫做**,即:你有資訊了再來通知我,而不是我傻乎乎的每次跑來問你)

在jmeter中測試websocket協議介面,需要先安裝websocket外掛程式和依賴包;

需新增的外掛程式為:

jmeterwebsocketsampler-1.0.2-snapshot.jar

外掛程式依賴的jar包為:

準備好這些jar包後,將它們拷貝到jmeter目錄的\lib\ext\下。

開啟jmeter,在sampler下,可以檢視到websocket sampler

在jmeter中,建立websocket sampler,介面如下;

針對介面中各選項說明如下:

1、webserver

(1)server name or ip:websocket傳送的目標伺服器的位址或者名稱

(2)port number:websocker伺服器監聽的埠號。(一般是http 80埠,可以通過fiddler、wireshark資料報得到)

2、timeout: 

(1)connection – 傳送乙個連線請求後,jmeter等待連線完成的最長時間,單位是毫秒。

(2)response - 對響應訊息的最大等待時間。

3、websocket request

(1)implementation – 只支援rfc6455(v13) ,websocket協議標準的最新版。

(2)protocol – 有ws與wss之分, ws字首是websocket連線的辨別標識,wss字首是websocket安全連線的辨別標識。根據自己的實際情況填寫

(3)streaming connection – 選擇這個tcp session要不要保持,如果勾上標識連線會一直存在,如果沒有勾上,那麼得到第一次響應後該鏈結就會被關閉。

(4)request data:填入將要傳送的請求,要跟開發溝通好,這個是什麼格式的訊息。

4.websocket response

(1)response pattern – 取樣器將等待含有該標識的訊息並繼續通訊(或者直到timeout,該連線關閉)

(2)close connection pattern – 如果伺服器返回的訊息含有這樣的字元,就結束會話。

(3)message backlog – 定義伺服器返回訊息保留的最大長度。

專案場景:

在某專案頁面中點選某個按鈕之後,會建立乙個websocket長連線,實時監控返回的值;

並間隔30s傳送心跳資料,保持連線;

通過瀏覽器的f12獲取websocket的連線資訊;在network->ws中,檢視websocket的連線資訊;

進入frames標籤頁,可檢視websocket通道傳送和接收的資料

其中『1686-77296』為傳送的資料,『ok』為接收到的響應資料

在傳送『1686-77296』資料之後,會間隔30s傳送心跳連線資料,資料內容為空,直到接收到『ok』後,該websocket通道連線關閉。

接下來,依據上述資訊,在jmeter的websocket sampler中填入對應的值

利用while 控制器,間隔30s迴圈傳送心跳,直到接收到期望的返回值,跳出while迴圈;

執行後,檢視結果樹如下所示:

spring boot整合websocket模組

size medium color red b 1.什麼是websocket b color size 首先,color blue b websocket是乙個持久化的協議,相對於http這種非持久的協議來說。b color 簡單的舉個例子吧,用目前應用比較廣泛的php生命週期來解釋。1 http的...

k8s ingress配置websocket支援

問題分析 表現形式 websocket鏈結 報錯 200 1copywebsocket connection to ws faile error during websocket handshake unexpected response code 200 猜測引起原因以及應對方式 解決方案 由於k...

k8s ingress配置websocket支援

具體來說,使用的ingress controller不一樣,有關的設定也不太一樣 參考 在 nginx ingress controller 中預設已經支援websocket訪問,官方文件中說明websocket不需要特別的配置,但需要在註解中配置以下三項 網上看到的另一種寫法配置 沒實踐過,若是配...