背景
最近在做游戲項(xiàng)目硅堆,做好java服務(wù)端皂冰,需要本地調(diào)試Websock服務(wù),并且是二進(jìn)制binary形式傳輸苛聘,網(wǎng)上的很多都是text形式傳輸?shù)臏y(cè)試頁(yè)面剖效,所以不符合要求嫉入。為了解決websocket的二進(jìn)制傳輸,并實(shí)現(xiàn)websocket通信機(jī)制的心跳問(wèn)題璧尸,所以寫了一個(gè)做法咒林。
目的
- Jmeter與java后端websocket服務(wù)建立連接
- 因?yàn)閣ebsocket機(jī)制,有定時(shí)檢測(cè)連接是否存儲(chǔ)爷光,所以需要Jmeter定時(shí)維護(hù)連接存在垫竞,不然超過(guò)心跳時(shí)間會(huì)斷開連接。
- 建立連接后蛀序,二進(jìn)制傳輸
操作
1. 下載Jmeter
https://jmeter.apache.org/download_jmeter.cgi
上官網(wǎng)欢瞪,找最新的版本,找到zip格式的壓縮文件徐裸,便于在windows下解壓遣鼓。
解壓后,找到bin目錄下的jmeter.bat文件重贺,則會(huì)啟動(dòng)Jmeter
2. 更改語(yǔ)言
點(diǎn)擊菜單欄-option-language-Chinese骑祟,則能顯示中文
3. 下載Jmeter的Websocket插件
https://bitbucket.org/pjtr/jmeter-websocket-samplers/src
下載后,放到j(luò)meter目錄的lib\ext下气笙,并重啟jmeter
如:
D:\Program Files\apache-jmeter-5.2.1\lib\ext\
4. 建立線程組
我這里是自測(cè)次企,所以用了一次循環(huán)
5. 建立 websocket寫入 樣例
對(duì)著 線程組右鍵-》添加-》取樣器-》 websocket simple write sample
5.1 創(chuàng)建連接
填寫ip 、端口潜圃、連接的path缸棵。
說(shuō)明一下而這個(gè)只是對(duì)服務(wù)端創(chuàng)建連接,并不是真正的通信傳輸數(shù)據(jù)用谭期。websocket都是創(chuàng)建連接后堵第,后續(xù)才真正的傳輸通信,如:聊天室建立房間后續(xù)再通信隧出。
5.2 創(chuàng)建 察看結(jié)果樹
用于看每次通信是否有成功連接型诚。
對(duì)著樣例右鍵-》添加-》監(jiān)聽器-》察看結(jié)果樹
6. 創(chuàng)建真正通信用的websocket寫樣例
同樣在一個(gè)線程組下,創(chuàng)建websocket寫樣例鸳劳。但是這個(gè)時(shí)候不需要填寫ip和端口,只需要選擇已存在的一個(gè)連接就行也搓。
6.1 填寫與傳輸二進(jìn)制
這個(gè)地方就比較麻煩赏廓,不能直接填json什么的,只能把對(duì)象寫好傍妒,然后轉(zhuǎn)換為byte數(shù)組幔摸,再轉(zhuǎn)為16進(jìn)制的數(shù)字放進(jìn)jmeter。
我這兩個(gè)類呢颤练,是個(gè)protobuf軟件proto.exe生成出來(lái)的類來(lái)的既忆,里面有轉(zhuǎn)換為toByteArray方法,得到二進(jìn)制數(shù)組后,再寫個(gè)工具把剛剛的數(shù)組轉(zhuǎn)換為16進(jìn)制患雇,就得出結(jié)果跃脊。
執(zhí)行后,打印出來(lái)后苛吱,得到這個(gè)數(shù)字就可以放進(jìn)jmeter的參數(shù)欄酪术。參數(shù)類型,記得選binary
到這里基本上就完成了翠储。為了壓測(cè)時(shí)绘雁,我們需要對(duì)websocket后端進(jìn)行心跳維護(hù)。
7. 最后弄弄定時(shí)心跳
對(duì)著線程組右鍵-》添加-》邏輯控制器-》runningtime控制器
填好這個(gè)定時(shí)任務(wù)存活時(shí)間
7.1 創(chuàng)建心跳傳輸內(nèi)容
如同第6點(diǎn) 那樣援所,創(chuàng)建websocket寫樣例庐舟,傳輸二進(jìn)制數(shù)據(jù)。
7.2 創(chuàng)建固定定時(shí)器
填寫這個(gè)定時(shí)器住拭,每多少秒執(zhí)行一次挪略。
本文到這里就結(jié)束了。本次講解的是websocket的開發(fā)自測(cè)废酷,可能對(duì)于大部分java開發(fā)來(lái)講都用不上瘟檩,只有游戲的同學(xué)會(huì)使用websocket,搞游戲澈蟆、聊天室墨辛、websocket等項(xiàng)目的同學(xué)打個(gè)call吧。
歡迎關(guān)注公眾號(hào)趴俘,文章更快一步
我的公眾號(hào) :地藏思維
掘金:地藏Kelvin
簡(jiǎn)書:地藏Kelvin
我的Gitee: 地藏Kelvin https://gitee.com/kelvin-cai