日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 前端技术 > vue >内容正文

vue

vue封装websocket_有关WebSocket必须了解的知识

發(fā)布時間:2025/3/12 vue 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 vue封装websocket_有关WebSocket必须了解的知识 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一、前言

最近之前時間正好在學(xué)習(xí)java知識,所以自個想找個小項(xiàng)目練練手,由于之前的ssm系統(tǒng)已經(jīng)跑了也有大半年了,雖然稀爛,但是功能還是勉強(qiáng)做到了,所以這次準(zhǔn)備重構(gòu)ssm系統(tǒng),改名為postCode系統(tǒng)(至于為什么前者叫ssm,可能是因?yàn)楹蠖薺ava用的是ssm框架吧),這次后端將不會開發(fā)兩套,而是主要實(shí)現(xiàn)之前沒有實(shí)現(xiàn)的單聊功能,由于搭建了多個服務(wù),通信使用的是RabbitMQ,然后把著對消息通信的原理研究寫下了這篇水文,后面會單獨(dú)淺談一些RabbitMQ。


二、TCP/IP模型

tcp/ip模型算是大學(xué)計(jì)算機(jī)學(xué)科中必學(xué)的一段知識,但長時間不接觸,又都還給老師了。

tcp/ip模型是互聯(lián)網(wǎng)的基礎(chǔ),它是一些列協(xié)議的總稱,tcp/ip模型又可以劃分為osi七層模型

OSI七層模型TCP/IP概率模型功能TCP/IP協(xié)議族應(yīng)用層應(yīng)用層文件傳輸、郵件傳輸ftp、smtp表示層數(shù)據(jù)格式化,代碼轉(zhuǎn)換,數(shù)據(jù)加密沒有協(xié)議會話層接觸或者建立于別的接口聯(lián)系沒有協(xié)議傳輸層傳輸層提供端對端的接口TCP、UDP網(wǎng)絡(luò)層網(wǎng)絡(luò)層為數(shù)據(jù)包選擇路由IP、ICMP、RIP、OSPF數(shù)據(jù)鏈路層鏈路層傳輸有地址的幀以及錯誤檢查功能SLIP、CSLIP、PPP、ARP物理層以二進(jìn)制數(shù)據(jù)形式在物理媒介上傳輸數(shù)據(jù)IS02110

2.1、UDP的特點(diǎn)

無連接

UDP無需建立三次握手,而是想要發(fā)送數(shù)據(jù)的時候就可以直接送發(fā)送端:將收到應(yīng)用層的數(shù)據(jù)增加一個UDP的標(biāo)識就發(fā)送出去了接受端:將UDP協(xié)議的標(biāo)識去掉就傳輸給應(yīng)用層了

可以單播,多播,廣播

UDP支持一對一、一對多、多對多、多對一的傳輸方式。

不可靠性

通信不需要建立連接,也不需要管對方有沒有收到,而是想發(fā)就發(fā),這樣的連接是不安全的

2.2、TCP的特點(diǎn)

面向連接僅支持單播傳輸可靠性

TCP提供全雙工通信(重點(diǎn)重點(diǎn))

TCP允許通信雙方的應(yīng)用程序在任何時候都能發(fā)送數(shù)據(jù),因?yàn)門CP連接的兩端都設(shè)有緩存,用來臨時存放雙向通信的數(shù)據(jù)。當(dāng)然,TCP可以立即發(fā)送一個數(shù)據(jù)段,也可以緩存一段時間以便一次發(fā)送更多的數(shù)據(jù)段(最大的數(shù)據(jù)段大小取決于MSS)


三、Socket編程

在了解WebSocket編程之前要先了解了解Socket

什么是Socket

  • 超詳細(xì)文檔

起初應(yīng)用層的數(shù)據(jù)到達(dá)傳輸層后需要依賴tcp/ip協(xié)議族建立tcp連接,然后tcp又需要依賴網(wǎng)絡(luò)層的ip協(xié)議等,從而產(chǎn)生了不同數(shù)據(jù)格式依賴不同協(xié)議模型的尷尬局面,導(dǎo)致一些列安全和網(wǎng)絡(luò)阻塞問題,從而誕生了socket的接口。

socket的誕生是為了應(yīng)用程序能夠更方便的將數(shù)據(jù)經(jīng)由傳輸層來傳輸socket本質(zhì)上就是對TCP/IP 的運(yùn)用進(jìn)行了一層封裝socket并不是協(xié)議,而是介于應(yīng)用層和傳輸層之間抽象出來的一層,是一組接口socket建立連接和斷開連接和普通的tcp連接一樣需要進(jìn)行三次握手和四次揮手socket可以建立長連接和短連接socket主要是應(yīng)用在C/S(Client/Server)模式里所有的連接都需要經(jīng)過socket接口

最后可以簡單的理解為socket對tcp/ip封裝后向應(yīng)用層提供一些更加方便傳輸數(shù)據(jù)的接口。


四、WebSocket

因?yàn)閟ocket只能是在C/S架構(gòu)出現(xiàn),瀏覽器端操作都處于應(yīng)用層,所以Html5中提出了WebSocket通信協(xié)議,為了解決真正意義上的全雙工通信的難題。

建立WebSocket連接前會先發(fā)送一個Header里面有Upgrade:Websocket的http請求ws和wss都屬于WebSocket的通信協(xié)議,wss和https一樣都只是多了TLS協(xié)議

不同網(wǎng)絡(luò)通信協(xié)議的對應(yīng)關(guān)系

類WebSocketXMLHttpRequest通信協(xié)議wshttp通信協(xié)議+TLS協(xié)議wsshttps

4.1、ScokJS/Socket.IO

ScokJS

ScokJS是一套基于WebSocket Api封裝的js庫,它在瀏覽器和web服務(wù)器之間創(chuàng)建了一個低延遲、全雙工、跨域通信通道。Spring框架提供了基于SockJS協(xié)議的透明的回退選項(xiàng);Spring Framework也是SockJS推薦Java Server的實(shí)現(xiàn),同時也提供了Java 的client實(shí)現(xiàn)SockJS的一大好處在于提供了瀏覽器兼容性。優(yōu)先使用原生WebSocket,如果在不支持websocket的瀏覽器中,會自動降為輪詢的方式。因此服務(wù)器如果是spring環(huán)境,應(yīng)該優(yōu)先使用ScokJS

Socket.IO

  • 使用文檔
  • 原理文檔

Socket.io和ScokJS一樣都是基于WebSocket Api封裝的js庫,同樣也是為了解決部分瀏覽器不支持WebSocket而誕生的js庫。Socket.io本身設(shè)計(jì)就是提供了一套node環(huán)境的全雙工連接,所有在node環(huán)境作為服務(wù)器使用Socket.io的時候還需要綁定http.Server服務(wù),因?yàn)閃ebSocket協(xié)議是構(gòu)建在HTTP協(xié)議之上的因此服務(wù)器如果是node環(huán)境,應(yīng)該優(yōu)先使用Socket.io

4.2、STOMP/vue-socket

雖然ScokJS和Socket.IO都解決了瀏覽器兼容性問題,但是在進(jìn)行雙向通信的過程中是不遵循任何消息協(xié)議的,也就是當(dāng)消息到達(dá)應(yīng)用層后就只剩消息文本本身了,所以不利于跨平臺和多端通信,于是對應(yīng)約束消息格式的消息協(xié)議的就誕生了。

STOMP

  • 使用文檔

STOMP是一種基于幀的協(xié)議,幀的結(jié)構(gòu)是效仿HTTP報文格式STOMP可以直接使用WebSocket進(jìn)行連接,也可以使用SockJS進(jìn)行連接Stomp.client(url) 通過WebSocket直接連接Stomp.over(ws) 通過sockJS進(jìn)行連接STOMP更加適合于做于消息組件,其中的方法設(shè)計(jì)都是可以配合rabbitMQ使用的,只需要在rabbitMQ中安裝rabbitmq_web_stomp和 rabbitmq_web_stomp_examples就可以了

vue-socket

vue-socket和STOMP一樣都是消息協(xié)議,vue-socket底層是基于socket.io封裝的js庫,對vue支持會更好。

來源:博客園

作者:買辣椒也用券

鏈接:https://www.cnblogs.com/Juaoie/p/13412752.html

總結(jié)

以上是生活随笔為你收集整理的vue封装websocket_有关WebSocket必须了解的知识的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。