国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當(dāng)前位置: 首頁(yè) > news >正文

咸陽(yáng)營(yíng)銷(xiāo)型網(wǎng)站建設(shè)泉州全網(wǎng)營(yíng)銷(xiāo)優(yōu)化

咸陽(yáng)營(yíng)銷(xiāo)型網(wǎng)站建設(shè),泉州全網(wǎng)營(yíng)銷(xiāo)優(yōu)化,怎么搭建自己的網(wǎng)站掙錢(qián),WordPress 去掉副標(biāo)題目錄 引言 WebSocket介紹 HTTP與WebSocket的區(qū)別 WebSocket測(cè)試方法 使用在線工具 使用Postman 使用Jmeter 使用Python 結(jié)語(yǔ) 引言 你是否曾經(jīng)為 WebSocket 接口測(cè)試中復(fù)雜的協(xié)議和難以捕獲的數(shù)據(jù)而感到束手無(wú)策?WebSocket 協(xié)議與傳統(tǒng)的 HTTP 協(xié)議不同&…

目錄

引言

WebSocket介紹

HTTP與WebSocket的區(qū)別

WebSocket測(cè)試方法

使用在線工具

使用Postman

使用Jmeter

使用Python

結(jié)語(yǔ)


引言

你是否曾經(jīng)為 WebSocket 接口測(cè)試中復(fù)雜的協(xié)議和難以捕獲的數(shù)據(jù)而感到束手無(wú)策?WebSocket 協(xié)議與傳統(tǒng)的 HTTP 協(xié)議不同,測(cè)試方法也需要針對(duì)其特殊性進(jìn)行優(yōu)化。

本文將向您介紹一些在 WebSocket 接口測(cè)試中提高效率的實(shí)用方法和技巧,希望對(duì)您學(xué)習(xí)WebSocket有所幫助。

WebSocket介紹

WebSocket 是一種基于在單個(gè) TCP 連接上進(jìn)行全雙工通信的協(xié)議,是從HTML5開(kāi)始提供的一種瀏覽器與服務(wù)器之間進(jìn)行全雙工通訊的網(wǎng)絡(luò)技術(shù),解決了HTTP協(xié)議不適用于實(shí)時(shí)通信的缺點(diǎn),相較于 HTTP 協(xié)議,WebSocket 協(xié)議實(shí)現(xiàn)了持久化網(wǎng)絡(luò)通信,可以實(shí)現(xiàn)客戶端和服務(wù)端的長(zhǎng)連接,能夠進(jìn)行雙向?qū)崟r(shí)通信,協(xié)議名為"ws"。

HTTP與WebSocket的區(qū)別

  1. 兩者都是基于TCP協(xié)議進(jìn)行數(shù)據(jù)傳輸,具有可靠的傳輸能力,而且都是應(yīng)用層協(xié)議
  2. HTTP是單向的通信,只能由客戶端向服務(wù)端發(fā)送請(qǐng)求,服務(wù)端無(wú)法主動(dòng)向客戶端發(fā)送消息
  3. WebSocket是雙向通信,客戶端和服務(wù)端是通過(guò)握手建立連接,可實(shí)現(xiàn)全雙工通信,雙方可以同時(shí)主動(dòng)向?qū)Ψ桨l(fā)送消息
  4. WebSocket在建立連接時(shí)數(shù)據(jù)是通過(guò)HTTP協(xié)議傳輸?shù)?#xff0c;但是建立之后,真正傳輸數(shù)據(jù)時(shí)使用的是更加可靠的TCP協(xié)議

二者關(guān)系

  • WebSocket在建立連接時(shí),HTTP通過(guò)Upgrade消息頭來(lái)通知客戶端需要采用WebSocket協(xié)議來(lái)完成這個(gè)請(qǐng)求,在發(fā)送完此響應(yīng)最后的空行后,服務(wù)器就會(huì)切換到WebSocket協(xié)議,接口返回狀態(tài)碼為101,表示服務(wù)器已經(jīng)理解了客戶端的請(qǐng)求,需要升級(jí)協(xié)議

WebSocket測(cè)試方法

使用在線工具

在線工具有很多,自行百度吧!個(gè)人習(xí)慣用這個(gè)工具

使用Postman

Postman支持測(cè)試WebSocket協(xié)議的接口,此文章發(fā)布時(shí)還處于公測(cè)階段,需要登錄后才能使用,入口如下圖所示

操作跟測(cè)試HTTP請(qǐng)求類(lèi)似,不過(guò)多介紹啦!如下圖所示

使用Jmeter

使用Jmeter既可以單獨(dú)測(cè)接口,也可以進(jìn)行性能測(cè)試,但測(cè)試WebSocket協(xié)議需要安裝插件,下載插件后放到Jmeter安裝路徑中的lib/ext目錄下,重啟Jmeter后在【選項(xiàng)】菜單中會(huì)出現(xiàn)【Plugins Manager】,然后在可用插件Tab頁(yè)搜索WebSocket,進(jìn)行安裝即可,如下圖所示

安裝后新建【線程組】,在添加【取樣器】中會(huì)出現(xiàn)6項(xiàng)WebSocket的組件

  • WebSocket Close:用于關(guān)閉WebSocket連接
  • WebSocket Open Connection:只建立WebSocket連接,不發(fā)送數(shù)據(jù)
  • WebSocket Ping/Pong:用于心跳檢測(cè),為了保持長(zhǎng)連接,防止客戶端被服務(wù)端判定為不活躍而被斷開(kāi)
  • WebSocket Single Read Sampler:用于接收一個(gè)(文本或二進(jìn)制)數(shù)據(jù)
  • WebSocket Single Write Sampler:用于發(fā)送一個(gè)(文本或二進(jìn)制)數(shù)據(jù)
  • WebSocket request-response Sampler:用于執(zhí)行基本的請(qǐng)求和響應(yīng)交換,既能發(fā)送數(shù)據(jù)又可以接收數(shù)據(jù)

若有使用過(guò)Jmeter就肯定能明白這些組件的使用方法,以WebSocket request-response Sampler為例,頁(yè)面信息介紹如下圖所示

使用Python

首先需要安裝websocket-client

pip install websocket-client

對(duì)于只是測(cè)試WebSocket接口發(fā)送接收消息是否正常,不需要長(zhǎng)時(shí)間連接,可以使用下面的短連接方法,在請(qǐng)求結(jié)束后會(huì)主動(dòng)斷開(kāi)連接

from websocket import create_connectionuser1 = create_connection("ws://localhost:6688/1")	# 用戶1打開(kāi)連接
user2 = create_connection("ws://localhost:6688/2")	# 用戶2打開(kāi)連接print("獲取響應(yīng)狀態(tài)碼:", user1.getstatus()) # 正常應(yīng)返回101
print("獲取響應(yīng)頭:", user2.getheaders())user1.send("你好呀!")	 # 用戶1向服務(wù)端發(fā)送消息res1 = user1.recv()		# 查看服務(wù)端推送的消息
res2 = user2.recv()if res1 == res2:print("服務(wù)端消息推送成功!\n")
else:print("消息獲取異常!\n")print("查看用戶1收到的消息:",res1,"\n查看用戶2收到的消息:",res2)

若是要對(duì)WebSocket接口做持續(xù)監(jiān)聽(tīng)工作,需要長(zhǎng)連接,但不需要傳參,只是監(jiān)聽(tīng)消息,使用WebSocketApp類(lèi)就更合適啦!方法如下

import websocketdef on_open(ws):				# 定義用來(lái)處理打開(kāi)連接的方法print("打開(kāi)連接")def on_message(ws, message):	# 定義用來(lái)監(jiān)聽(tīng)服務(wù)器返回消息的方法print("監(jiān)聽(tīng)到服務(wù)器返回的消息,:\n", message)def on_error(ws, error):		# 定義用來(lái)處理錯(cuò)誤的方法print("連接出現(xiàn)異常:\n", error)def on_close(ws):				# 定義用來(lái)處理斷開(kāi)連接的方法print("關(guān)閉連接")if __name__ == "__main__":websocket.enableTrace(True) # 可選擇開(kāi)啟跟蹤,在控制臺(tái)可以看到詳細(xì)的信息ws = websocket.WebSocketApp("ws://localhost:6688",on_open=on_open,on_message=on_message,on_error=on_error,on_close=on_close)ws.run_forever()	# 調(diào)用run_forever方法,保持長(zhǎng)連接

還可以使用Pytest對(duì)WebSocket接口實(shí)現(xiàn)自動(dòng)化測(cè)試,示例如下

import pytest
from websocket import create_connectionclass TestDyd():url = "ws://localhost:6688"@classmethoddef setup_class(cls):cls.ws = create_connection(cls.url)  # 建立連接cls.ws.settimeout(5)  # 設(shè)置超時(shí)時(shí)間def test_connect(self):# 通過(guò)狀態(tài)碼判斷連接是否正常assert self.ws.getstatus() == 101def test_send(self):params = "你好呀!"  			# 定義傳參self.ws.send(params)			# 發(fā)送請(qǐng)求result = self.ws.recv()			# 獲取響應(yīng)結(jié)果print("收到來(lái)自服務(wù)端的消息:", result)	# 打印響應(yīng)結(jié)果# 因?yàn)樵摐y(cè)試項(xiàng)目傳參會(huì)顯示在響應(yīng)中,所以通過(guò)判斷傳參是否在響應(yīng)結(jié)果中進(jìn)行斷言assert params in resultif __name__ == '__main__':pytest.main(["-vs"])

傳參可以使用@pytest.mark.parametrize()裝飾器,示例如下

import pytest
from websocket import create_connectionclass TestDyd():data = [("/user/2", "今天開(kāi)直播賣(mài)魚(yú)!!!!"),("/user/3", "魚(yú)可以買(mǎi)來(lái)放生嗎?"),("/user/4", "那條翻白肚的魚(yú)有死亡證明嗎?"),("/user/5", "你的魚(yú)會(huì)唱歌嗎?"),("/user/6", "你的魚(yú)上大學(xué)了嗎?"),("/user/7", "你的魚(yú)買(mǎi)回來(lái)需要隔離嗎?")]@pytest.mark.parametrize("user, word", data)def test_send(self, user, word):ws = create_connection("ws://localhost:6688"+user)params = word  ws.send(params)  # 發(fā)送請(qǐng)求result = ws.recv()  # 獲取響應(yīng)結(jié)果print("來(lái)自服務(wù)端的消息:", result)assert params in result	# 斷言

先簡(jiǎn)單介紹這些吧,關(guān)于Python腳本,可以參考官方文檔,里面有示例和常見(jiàn)問(wèn)題解決方法

結(jié)語(yǔ)

這篇貼子到這里就結(jié)束了,最后,希望看這篇帖子的朋友能夠有所收獲。

?獲取方式:留言【W(wǎng)ebSocket學(xué)習(xí)】即可

如果你覺(jué)得文章還不錯(cuò),請(qǐng)大家 點(diǎn)贊、分享、留言 下,因?yàn)檫@將是我持續(xù)輸出更多優(yōu)質(zhì)文章的最強(qiáng)動(dòng)力!

?

http://aloenet.com.cn/news/33386.html

相關(guān)文章:

  • 網(wǎng)站轉(zhuǎn)化附子seo教程
  • js 網(wǎng)站測(cè)速千鋒教育地址
  • 有沒(méi)有幫人做數(shù)學(xué)題的網(wǎng)站企業(yè)宣傳文案
  • wordpress 2019主題谷歌字體寧波seo怎么做推廣渠道
  • 網(wǎng)站改版 方案東莞整站優(yōu)化推廣公司找火速
  • 做網(wǎng)站一般哪里找廣東的seo產(chǎn)品推廣服務(wù)公司
  • 男女直接做免費(fèi)的網(wǎng)站我對(duì)網(wǎng)絡(luò)營(yíng)銷(xiāo)的理解
  • 在建設(shè)部網(wǎng)站上的舉報(bào)國(guó)外免費(fèi)輿情網(wǎng)站有哪些軟件
  • 石家莊制作網(wǎng)站的公司效果最好的推廣軟件
  • 什么用來(lái)編寫(xiě)網(wǎng)頁(yè)鄭州seo詢搜點(diǎn)網(wǎng)絡(luò)效果佳
  • 酒泉網(wǎng)站建設(shè)企業(yè)網(wǎng)站設(shè)計(jì)模板
  • 橋東網(wǎng)站建設(shè)百度熱點(diǎn)榜單
  • python 做網(wǎng)站 代碼會(huì)seo顧問(wèn)是干什么
  • 中華人民共和國(guó)住房與城鄉(xiāng)建設(shè)部網(wǎng)站廣州代運(yùn)營(yíng)公司有哪些
  • 濟(jì)南優(yōu)化網(wǎng)站的哪家好軟文世界平臺(tái)
  • 家居裝修公司百度關(guān)鍵詞優(yōu)化大師
  • 麗水市蓮都區(qū)建設(shè)分局網(wǎng)站優(yōu)幫云排名自動(dòng)扣費(fèi)
  • 南開(kāi)網(wǎng)站建設(shè)公司seo網(wǎng)絡(luò)優(yōu)化平臺(tái)
  • 大學(xué)生網(wǎng)頁(yè)設(shè)計(jì)期末作品代碼網(wǎng)站seo是什么意思
  • 截圖域名網(wǎng)站.seo優(yōu)化排名技術(shù)百度教程
  • 怎么自己做網(wǎng)站免費(fèi)的免費(fèi)seo關(guān)鍵詞優(yōu)化排名
  • 三亞網(wǎng)紅餐廳衡水網(wǎng)站seo
  • wap網(wǎng)站建設(shè)管理制度百度平臺(tái)營(yíng)銷(xiāo)寶典
  • 學(xué)校網(wǎng)站免費(fèi)建設(shè)關(guān)鍵詞搜索愛(ài)站
  • aap手機(jī)網(wǎng)站建設(shè)畢業(yè)設(shè)計(jì)網(wǎng)站
  • flash怎么做電子書(shū)下載網(wǎng)站seo關(guān)鍵詞快速排名
  • .net開(kāi)發(fā)的網(wǎng)站有哪些淘寶寶貝關(guān)鍵詞排名查詢工具
  • 專(zhuān)門(mén)做瓷磚的網(wǎng)站百度推廣客服工作怎么樣
  • 自己做網(wǎng)站排名好嗎熱搜榜排名今日
  • 網(wǎng)站上的圖分辨率做多少搜狗站長(zhǎng)工具