(1) 去官方網站下載jmeter(版本爲3.3)並解壓。點擊bin/jmeter.bat啓動jmeterhtml
(2) 新建線程組。web
(3) 在線程組中新建WebSocket Sample安全
一、WebServer
(1)Server Name or IP:WebSocket發送的目標服務器的地址或者名稱
(2)Port Number:WebSocker服務器監聽的端口號。(通常是HTTP 80端口,能夠經過WireShark數據包獲得)
二、Timeout:
(1)Connection – 發送一個鏈接請求後,Jmeter等待鏈接完成的最長時間,單位是毫秒。
(2)Response - 對響應消息的最大等待時間。
三、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 – 定義服務器返回消息保留的最大長度。
服務器
按照網上的例子,能夠用http://www.websocket.org/echo.html這個網站作一些試驗,網站會將收到的數據(你的request數據)在服務器響應中原樣返回。
將網站提供的host等信息填入便可與網站通訊,下面是個人實驗,用於理解Jmeter中websocket sampler
websocket
test plan設置以下:
不勾選streaming connection結果以下:
能夠看出發送的Ground control to Major Tom被返回,這個實驗是成功的,從result tree的sampler result中Execution FLow中能夠看出測試的結果與上面咱們的設置之間的關係:用了5000毫秒的時間等待服務器的鏈接,用了20000毫秒的時間等待服務器的消息,且在接受到第一條消息後,關閉了這個websocket會話。
session
能夠看到在結束測試的時候,勾上streaming那個小勾後,測試結束時streaming connection仍是開着的。
socket
只發送一條消息可能看不出什麼區別,將Websocket sampler複製一下,發送兩條信息。這樣就能夠看出第二條消息發送時是直接用的第一條消息打開的鏈接,服務器的響應被歸類到一次會話的響應窗口。
oop
結果以下:
循環中的sampler都勾選了streaming,最後一個sampler沒有勾選此選項,結果中能夠看出:在loop controller中的sampler使用的是一個鏈接,在loop外面的這個sampler會打開一個新的鏈接,能夠得出一個結論,實際上,當勾選了streaming connection時,不只會在結束會話後保留鏈接,並且勾選了的sampler會在有可用鏈接是直接使用,而沒有勾選的sampler即便存在可用鏈接也會從新打開一個新的鏈接。所以,若是是要在一個會話中發送多條消息,請勾選這個streaming
connection。
測試
這就要用到以前提到過的response pattern和close pattern,先給出三個請求在沒有設置response pattern和close pattern的運行結果以便於比較
而後在第一個sampler中設置response pattern和close pattern以下(因爲只創建一次鏈接,因此只會讀取第一個sampler中的pattern設置信息)
這樣在第二個請求的響應返回不符合father這個標識,又符合了close pattern時,就會斷開鏈接了,此時第三個websocket勾選了streaming使用上一個鏈接,但實際上卻鏈接不上這個遠程終端時就會報錯了。(response響應在這種狀況下不能設置爲空,若是先檢測到返回的內容符合response pattern,就不會再去判斷是否符合close pattern了)
網站
上面的試驗使用的都是默認的3,所以若是試驗中的三個socket都是是在一個會話中通訊,點擊第三個是能夠看到最近的三個服務器響應的。當這個選項設置爲1時,就只能看到最近的一條響應信息了