目錄
一、WebSocket簡介
二、JMeter測試WebSocket接口
三、WebSocket和Socket的區(qū)別
最近老被問到WebSocket,突然想到以前大學(xué)時上Java課的時候,老師教我們socket連接,一個同學(xué)電腦做客戶端,一個同學(xué)電腦做服務(wù)端,當(dāng)雙方消息發(fā)送成功,第一次感覺到代碼的奇妙~
畢竟抄代碼都不利索,哈哈哈哈哈~
接下來將如何測試WebSocket接口總結(jié)下來。
一、WebSocket簡介
WebSocket是一種網(wǎng)絡(luò)通信協(xié)議,客戶端和服務(wù)端只需要完成一次握手,兩者之間就直接可以創(chuàng)建持久性的連接,并進行雙向數(shù)據(jù)傳輸。
我們常見的協(xié)議是HTTP和HTTPS協(xié)議,客戶端向服務(wù)端發(fā)起請求,服務(wù)端向客戶端返回響應(yīng),完成一次請求響應(yīng)之后就會斷開連接。對于金融證券的實時信息、社交網(wǎng)絡(luò)的實時消息推送、網(wǎng)絡(luò)直播等需要實時傳輸數(shù)據(jù)的情況下,HTTP并不能很好的滿足。
HTTP需要客戶端向服務(wù)端發(fā)起請求;WebSocket服務(wù)端可以主動向客戶端推送信息,客戶端也可以主動向服務(wù)器發(fā)送信息。
一旦WebSocket連接建立后,后續(xù)數(shù)據(jù)都以幀序列的形式傳輸。在客戶端斷開WebSocket連接或Server端中斷連接前,不需要客戶端和服務(wù)端重新發(fā)起連接請求。
二、JMeter測試WebSocket接口
1、安裝WebSocket插件
選項 > Plugins Manager 輸入WebSocket,勾選對應(yīng)插件,點擊Apply Changes and Restart JMeter。
該插件包含websocket-api.jar、websocket-common.jar、websocket-client.jar、jetty-http.jar、jetty-io.jar、jetty-util.jar等JAR包。
2、WebSocket相關(guān)的取樣器
- websocket close 用于正常關(guān)閉websocket連接;
- websocket open connection 用于顯式設(shè)置websocket連接;
- websocket ping-pong 用于發(fā)送ping和接收 pong請求;
- websocket sampler 用于執(zhí)行基本的請求-響應(yīng)請求;
- websocket single read sampler 用于接收一個文本或二進制的websocket請求;
- websocket single write sampler 用于發(fā)送一個文本或二進制的websocket請求;
3、構(gòu)建一個WebSocket接口
一般我們在網(wǎng)上看到的大多HTTP接口,為了方便驗證,我從網(wǎng)上找一段Java實現(xiàn)WebSocket實時通訊代碼,代碼已經(jīng)放到https://gitee.com/weimenghua/Learn-Java,運行JavaWebApplication即可啟動項目,項目啟動后即可進行測試。
客戶端發(fā)送內(nèi)容:http://127.0.0.1:63342/Learn-Java/Java-Web/com/wmh/view/socket.html。
服務(wù)端發(fā)送內(nèi)容:http://127.0.0.1:9999/wbtest/sendMsg/test_websocket。
4、進行websocket接口測試
選中“線程組”右鍵 > 添加 > 取樣器 > WebSocket Open Connection。
建立WebSocket連接:ws://127.0.0.1:9999/websocket/demo。
選中“線程組”右鍵 > 添加 > 取樣器 > WebSocket Sampler。
發(fā)起WebSocket請求:ws://127.0.0.1:9999/wbtest/sendMsg/test_websocket。
- Server Name or IP:發(fā)送請求的目標(biāo)服務(wù)器的IP地址或者域名。
- Port Number:服務(wù)器地址后的端口號,有則填寫,沒有不用填寫。
- Protocol [ws/wss]:ws是明文數(shù)據(jù)傳輸,wss是密文數(shù)據(jù)傳輸,相當(dāng)于http和https的差別,默認(rèn)ws。
- Path:接口路徑。
- Request data:發(fā)送的請求數(shù)據(jù)。
我們可以再控制臺看到服務(wù)端發(fā)送內(nèi)容。
若需在請求完成之后關(guān)閉WebSocket連接,可添加WebScoket Close取樣器。
相關(guān)腳本已放到gitee:https://gitee.com/weimenghua/wei-notebook/blob/master/JMeter/JMeter.jmx
三、WebSocket和Socket的區(qū)別
1、socket翻譯為套接字,socket是在應(yīng)用層和傳輸層之間的一個抽象層,它把TCP/IP層復(fù)雜的操作抽象為幾個簡單的接口供應(yīng)用層調(diào)用以實現(xiàn)進程在網(wǎng)絡(luò)中通信。
2、WebSocket協(xié)議是基于TCP的一種新的網(wǎng)絡(luò)協(xié)議,和http協(xié)議一樣屬于應(yīng)用層協(xié)議,是一種讓客戶端和服務(wù)器之間能進行雙向?qū)崟r通信的技術(shù)。
https://www.processon.com/view/link/615eae81e0b34d06f3dcdf4b文章來源:http://www.zghlxwxcb.cn/news/detail-481622.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-481622.html
到了這里,關(guān)于【接口測試】JMeter測試WebSocket接口的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!