WebSocket 接口測試淺談
什么是 WebSocket
WebSocket 是一種基于在單個 TCP 連接上進行全雙工通信的協(xié)議,解決了HTTP協(xié)議不適用于實時通信的缺點,相較于 HTTP 協(xié)議,WebSocket 協(xié)議實現(xiàn)了持久化網(wǎng)絡通信,可以實現(xiàn)客戶端和服務端的長連接,能夠進行雙向實時通信,協(xié)議名為"ws"。
WebSocket 使得客戶端和服務器之間的數(shù)據(jù)交換變得更加簡單,允許服務端主動向客戶端推送數(shù)據(jù)。在 WebSocket API 中,瀏覽器和服務器只需要完成一次握手,兩者之間就直接可以創(chuàng)建持久性的連接,并進行雙向數(shù)據(jù)傳輸。在 WebSocket API 中,瀏覽器和服務器只需要做一個握手的動作,然后,瀏覽器和服務器之間就形成了一條快速通道。兩者之間就直接可以數(shù)據(jù)互相傳送。
HTTP與WebSocket
WebSocket的特點
- 建立在 TCP 協(xié)議之上,服務器端的實現(xiàn)比較容易。
- 與 HTTP 協(xié)議有著良好的兼容性。默認端口也是80和443,并且握手階段采用 HTTP 協(xié)議,因此握手時不容易屏蔽,能通過各種 HTTP 代理服務器。
- 數(shù)據(jù)格式比較輕量,性能開銷小,通信高效。
- 可以發(fā)送文本,也可以發(fā)送二進制數(shù)據(jù)。
- 沒有同源限制,客戶端可以與任意服務器通信。
- 協(xié)議標識符是ws(如果加密,則為wss),服務器網(wǎng)址就是 URL。
ws://example.com:80/some/path
Socket 是什么?
網(wǎng)絡上的兩個程序通過一個雙向的通信連接實現(xiàn)數(shù)據(jù)的交換,這個連接的一端稱為一個 Socket(套接字),因此建立網(wǎng)絡通信連接至少要一對端口號。
Socket 本質:是對 TCP/IP 協(xié)議棧的封裝,它提供了一個針對 TCP 或者 UDP 編程的接口,并不是另一種協(xié)議。通過 Socket,你可以使用 TCP/IP 協(xié)議。