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