国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

前端實(shí)現(xiàn)消息推送、即時(shí)通信、SSE、WebSocket、http簡(jiǎn)介

這篇具有很好參考價(jià)值的文章主要介紹了前端實(shí)現(xiàn)消息推送、即時(shí)通信、SSE、WebSocket、http簡(jiǎn)介。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

信息推送

服務(wù)端主動(dòng)向客戶端推送消息,使客戶端能夠即時(shí)接收到信息。

場(chǎng)景

  • 頁(yè)面接收到點(diǎn)贊,消息提醒
  • 聊天功能
  • 彈幕功能
  • 實(shí)時(shí)更新數(shù)據(jù)功能

實(shí)現(xiàn)即時(shí)通訊方式

短輪詢

瀏覽器(客戶端)每隔一段時(shí)間向服務(wù)器發(fā)送http請(qǐng)求,服務(wù)器端在收到請(qǐng)求后,不論是否有數(shù)據(jù)更新,都直接進(jìn)行響應(yīng)。

本質(zhì):客戶端通過不停的請(qǐng)求,使客戶端能模擬能實(shí)時(shí)能接收客戶端的數(shù)據(jù)變化

優(yōu)點(diǎn):簡(jiǎn)單易懂,操作方便

缺點(diǎn):如果每個(gè)客戶端不停的向服務(wù)器發(fā)送請(qǐng)求,使用人數(shù)增加,請(qǐng)求數(shù)量翻倍,造成服務(wù)器壓力大,反應(yīng)遲緩。不適合于大型項(xiàng)目或者使用人數(shù)太多。

var xhr = new XMLHttpRequest();
setInterval(function(){
    xhr.open('GET','/user');
    xhr.onreadystatechange = function(){

    };
    xhr.send();
},1000)

長(zhǎng)輪詢(comet)

服務(wù)端接收客戶端的請(qǐng)求之后不會(huì)立即反應(yīng),先是將請(qǐng)求掛起,當(dāng)數(shù)據(jù)發(fā)生改變后,返回響應(yīng)。當(dāng)一定時(shí)間內(nèi)數(shù)據(jù)未變化,計(jì)時(shí)結(jié)束返回響應(yīng)并關(guān)閉連接。客戶端處理響應(yīng)后,向服務(wù)器再次發(fā)送新一輪長(zhǎng)輪詢。

優(yōu)點(diǎn):比短輪詢減少了http請(qǐng)求

缺點(diǎn):掛起也會(huì)浪費(fèi)資源

function ajax(){
    var xhr = new XMLHttpRequest();
    xhr.open('GET','/user');
    xhr.onreadystatechange = function(){
        ajax();
    };
    xhr.send();
}

短輪詢與長(zhǎng)輪詢都

  • 基于HTTP的,兩者本身存在著缺陷;輪詢需要更快的處理速度,長(zhǎng)輪詢要求處理并發(fā)的能力
  • 服務(wù)器不會(huì)主動(dòng)推送信息,而是在客戶端發(fā)送ajax請(qǐng)求后進(jìn)行返回的響應(yīng)

長(zhǎng)連接(SSE)

SSE基于 HTTP 協(xié)議中的持久連接,作為 HTML5 出現(xiàn)的新功能,不用客戶端向服務(wù)器發(fā)請(qǐng)求,而是當(dāng)服務(wù)器數(shù)據(jù)發(fā)生改變,直接對(duì)客戶端響應(yīng)

?see 前后端原生實(shí)現(xiàn)?Web消息推送之SSE_魅Lemon的博客-CSDN博客

see vue3?vue3使用sse_sse vue_OneRepublicSu的博客-CSDN博客

see vue2?在vue2中使用SSE(服務(wù)器發(fā)送事件)_sse vue_如晴天似雨天~的博客-CSDN博客

WebSocket

WebSocket是Html5定義的一個(gè)新協(xié)議,可以實(shí)現(xiàn)服務(wù)器-客戶端全雙工通信;需要服務(wù)器和客戶端建立連接,當(dāng)連接開始,雙方處于平等狀態(tài)互發(fā)信息,不存在請(qǐng)求和相應(yīng)的關(guān)系。

sse websocket
http 協(xié)議 獨(dú)立的 websocket 協(xié)議
輕量,使用簡(jiǎn)單 相對(duì)復(fù)雜
默認(rèn)支持?jǐn)嗑€重連 需要自己實(shí)現(xiàn)斷線重連
文本傳輸 二進(jìn)制傳輸
支持自定義發(fā)送的消息類型 -
單通道,只能服務(wù)端向客戶端發(fā)消息 雙通道,相互發(fā)信息

websocket實(shí)現(xiàn)??

js實(shí)現(xiàn)WebSocket 連接_js websocket_給你六圓錢的博客-CSDN博客
webSocket 學(xué)習(xí)_小滿zs的博客-CSDN博客

http

  • 全稱:超文本傳輸協(xié)議。
  • 簡(jiǎn)介:服務(wù)器傳輸 超文本 到本地瀏覽器的傳輸協(xié)議
  • 特點(diǎn):應(yīng)用層協(xié)議,基于TCP/IP協(xié)議傳輸數(shù)據(jù)
  • https:加密的http
  • HTTP默認(rèn)的端口號(hào)為80, HTTPS的端口號(hào)為443。

http協(xié)議狀態(tài)碼

  • 1xx? (信息)
    • 100 接受的請(qǐng)求正在處理,信息類狀態(tài)碼
  • 2xx(成功) 請(qǐng)求成功處理
    • 200 服務(wù)器已成功處理了請(qǐng)求
  • 3xx(重定向)要完成請(qǐng)求,需要進(jìn)一步操作
    • 301? ? 永久性重定向,表示資源已被分配了新的 URL
    • 302? ? 臨時(shí)性重定向,表示資源臨時(shí)被分配了新的 URL
    • 303? ? 表示資源存在另一個(gè)URL,用GET方法獲取資源
    • 304? ? (未修改)自從上次請(qǐng)求后,請(qǐng)求網(wǎng)頁(yè)未修改。服務(wù)器返回響應(yīng),不返回網(wǎng)頁(yè)內(nèi)容
  • 4xx? 客戶端錯(cuò)誤
    • 400? ? ? 服務(wù)器不理解請(qǐng)求的語(yǔ)法
    • 401? ? ? 請(qǐng)求需要有通過HTTP認(rèn)證的認(rèn)證信息
    • 403? ? ? 服務(wù)器拒絕請(qǐng)求
    • 404? ? ? 服務(wù)器找不到請(qǐng)求網(wǎng)頁(yè)
  • 5xx 服務(wù)器錯(cuò)誤
    • 500? ? ? 服務(wù)器遇到錯(cuò)誤,無(wú)法完成請(qǐng)求
    • 503? ? ? 服務(wù)器處于停機(jī)維護(hù)或超負(fù)載,無(wú)法處理請(qǐng)求

三次握手四次揮手

三次握手的機(jī)制是為了保證能建立一個(gè)安全可靠的連接

看見一個(gè)特別好玩的例子,公安局長(zhǎng)王哥 和 陳某打電話

  1. 公安局:你好!陳某,聽得到嗎?(一次會(huì)話)
  2. 陳某:聽到了,王哥,你能聽到嗎 (二次會(huì)話)
  3. 公安局:聽到了,你過來(lái)自首吧 (開始會(huì)話)(三次會(huì)話)

前端消息推送,前端,前端,vue.js,websocket

最開始時(shí)客戶端和服務(wù)器都處于CLOSED關(guān)閉狀態(tài)。主動(dòng)打開連接的為客戶端,被動(dòng)打開連接的是服務(wù)器。

TCP服務(wù)器進(jìn)程先創(chuàng)建傳輸控制塊TCB,時(shí)刻準(zhǔn)備接受客戶進(jìn)程的連接請(qǐng)求,服務(wù)器就進(jìn)入了LISTEN 監(jiān)聽狀態(tài)

  • 第一次握手
    • 客戶端向服務(wù)端發(fā)送請(qǐng)求報(bào)文,報(bào)文首部中SYN=1,初始序列號(hào) seq=x。此時(shí),TCP客戶端進(jìn)程進(jìn)入了?SYN-SENT 同步已發(fā)送狀態(tài)
    • 得出結(jié)論:客戶端的發(fā)送能力正常
  • 第二次握手
    • 服務(wù)器收到請(qǐng)求報(bào)文后,如果同意連接,則會(huì)向客戶端發(fā)出確認(rèn)報(bào)文。確認(rèn)報(bào)文中應(yīng)該 ACK=1,SYN=1,確認(rèn)號(hào)是ack=x+1,序列號(hào) seq=y,此時(shí),TCP服務(wù)器進(jìn)程進(jìn)入了?SYN-RCVD 同步收到狀態(tài)
    • 得出結(jié)論:證明服務(wù)器端的接收能力、發(fā)送能力正常
  • 第三次握手
    • 客戶端收到報(bào)文,向服務(wù)端進(jìn)行確認(rèn),確認(rèn)報(bào)文的ACK=1,ack=y+1,序列號(hào)seq=x+1,此時(shí),TCP連接建立,客戶端進(jìn)入ESTABLISHED已建立連接狀態(tài)
    • 得出結(jié)論:證明客戶端的接收能力正常

為什么會(huì)需要三次握手的猜測(cè)?

  • 當(dāng)客戶端向服務(wù)器發(fā)送請(qǐng)求報(bào)文,由于網(wǎng)絡(luò)等原因滯留,未能即時(shí)發(fā)送到服務(wù),然后客戶端繼續(xù)向服務(wù)端發(fā)送請(qǐng)求,后于服務(wù)器成功建立了連接。當(dāng)連接釋放后,之前的請(qǐng)求到達(dá)了服務(wù)器,這個(gè)請(qǐng)求已失效了,但服務(wù)器誤以為客戶端的新請(qǐng)求,又進(jìn)行了連接,造成了資源浪費(fèi)和不必要的錯(cuò)誤。
  • 采用三次握手,失效的報(bào)文發(fā)送到服務(wù)器,服務(wù)器再返回給客戶端,客戶端就能確定是否還要繼續(xù)建立連接。


四次揮手

  1. 張三:好的,那我先走了
  2. 李四:好的,那你走吧
  3. 李四:那我也走了?
  4. 張三:好的,你走吧

?前端消息推送,前端,前端,vue.js,websocket

數(shù)據(jù)傳輸完畢后,雙方都可釋放連接。最開始的時(shí)候,客戶端和服務(wù)器都是處于ESTABLISHED狀態(tài),然后客戶端主動(dòng)關(guān)閉,服務(wù)器被動(dòng)關(guān)閉。

一次揮手 客戶端發(fā)出連接釋放報(bào)文,并且停止發(fā)送數(shù)據(jù)。釋放數(shù)據(jù)報(bào)文首部,F(xiàn)IN=1,其序列號(hào)為seq=u(等于前面已經(jīng)傳送過來(lái)的數(shù)據(jù)的最后一個(gè)字節(jié)的序號(hào)加1),此時(shí),客戶端進(jìn)入FIN-WAIT-1(終止等待1)狀態(tài)

第二次揮手 服務(wù)器端接收到連接釋放報(bào)文后,發(fā)出確認(rèn)報(bào)文,ACK=1,ack=u+1,并且?guī)献约旱男蛄刑?hào)seq=v,此時(shí),服務(wù)端就進(jìn)入了CLOSE-WAIT 關(guān)閉等待狀態(tài)

第三次揮手 客戶端接收到服務(wù)器端的確認(rèn)請(qǐng)求后,客戶端就會(huì)進(jìn)入FIN-WAIT-2(終止等待2)狀態(tài),等待服務(wù)器發(fā)送連接釋放報(bào)文,服務(wù)器將最后的數(shù)據(jù)發(fā)送完畢后,就向客戶端發(fā)送連接釋放報(bào)文,服務(wù)器就進(jìn)入了LAST-ACK(最后確認(rèn))狀態(tài),等待客戶端的確認(rèn)。

第四次揮手 客戶端收到服務(wù)器的連接釋放報(bào)文后,必須發(fā)出確認(rèn),ACK=1,ack=w+1,而自己的序列號(hào)是seq=u+1,此時(shí),客戶端就進(jìn)入了TIME-WAIT(時(shí)間等待)狀態(tài),但此時(shí)TCP連接還未終止,必須要經(jīng)過2MSL后(最長(zhǎng)報(bào)文壽命),當(dāng)客戶端撤銷相應(yīng)的TCB后,客戶端才會(huì)進(jìn)入CLOSED關(guān)閉狀態(tài),服務(wù)器端接收到確認(rèn)報(bào)文后,會(huì)立即進(jìn)入CLOSED關(guān)閉狀態(tài),到這里TCP連接就斷開了,四次揮手完成

為什么客戶端要等待2MSL?
主要原因是為了保證客戶端發(fā)送那個(gè)的第一個(gè)ACK報(bào)文能到到服務(wù)器,因?yàn)檫@個(gè)ACK報(bào)文可能丟失,并且2MSL是任何報(bào)文在網(wǎng)絡(luò)上存在的最長(zhǎng)時(shí)間,超過這個(gè)時(shí)間報(bào)文將被丟棄,這樣新的連接中不會(huì)出現(xiàn)舊連接的請(qǐng)求報(bào)文。
?文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-604890.html

?輸入地址點(diǎn)擊回車鍵,瀏覽器干了什么

  • 輸入地址并確認(rèn)后,瀏覽器對(duì)域名進(jìn)行解析。
  • 如果瀏覽器有域名對(duì)應(yīng)的DNS相關(guān)信息的緩存
    • 有的話可以拿到服務(wù)端的IP地址,
    • 如果沒有的話,會(huì)去本地的host文件查看是否進(jìn)行了配置,
      • 如果host文件沒有配置相關(guān)的信息,會(huì)發(fā)起DNS的請(qǐng)求用來(lái)獲取對(duì)應(yīng)的服務(wù)器的IP地址。應(yīng)用端會(huì)構(gòu)造DNS的請(qǐng)求報(bào)文,應(yīng)用層會(huì)調(diào)用傳輸層的UDP的相關(guān)協(xié)議進(jìn)行數(shù)據(jù)傳輸,會(huì)在DNS的基礎(chǔ)上加上UDP的請(qǐng)求頭然后傳輸信息至網(wǎng)絡(luò)層,網(wǎng)絡(luò)層會(huì)在UDP的請(qǐng)求報(bào)文基礎(chǔ)上加上IP的請(qǐng)求頭然后到數(shù)據(jù)鏈路層,數(shù)據(jù)鏈路層會(huì)實(shí)現(xiàn)二層尋址,會(huì)加上自己的mac信息和通過網(wǎng)絡(luò)層的ARP協(xié)議里拿到的下一步基地的mac信息一起通過物理層一起傳輸出去,通常傳到路由器,然后路由器這個(gè)三層設(shè)備最終會(huì)通過運(yùn)營(yíng)商的路線傳輸?shù)较乱粋€(gè)路由器地址,達(dá)到服務(wù)器后信息通過相同步驟進(jìn)行層層解析HTTP的請(qǐng)求報(bào)文,然后構(gòu)造HTTP響應(yīng)報(bào)文沿著相同的步驟傳輸至客戶端。用戶輸入U(xiǎn)RL回車之后,瀏覽器到底做了什么?_回車之后瀏覽器做了什么_小牙同學(xué)的博客-CSDN博客

到了這里,關(guān)于前端實(shí)現(xiàn)消息推送、即時(shí)通信、SSE、WebSocket、http簡(jiǎn)介的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • SSE實(shí)現(xiàn)消息實(shí)時(shí)推送,前端漸進(jìn)式學(xué)習(xí)、實(shí)踐,真香

    SSE(Server Sent Event),直譯為服務(wù)器發(fā)送事件,顧名思義,也就是客戶端可以獲取到服務(wù)器發(fā)送的事件。我們常見的 http 交互方式是客戶端發(fā)起請(qǐng)求,服務(wù)端響應(yīng),然后一次請(qǐng)求完畢;但是在 sse 的場(chǎng)景下,客戶端發(fā)起請(qǐng)求,連接一直保持,服務(wù)端有數(shù)據(jù)就可以返回?cái)?shù)據(jù)給客戶端

    2024年02月21日
    瀏覽(20)
  • SSE技術(shù)和WebSocket技術(shù)實(shí)現(xiàn)即時(shí)通訊

    SSE技術(shù)和WebSocket技術(shù)實(shí)現(xiàn)即時(shí)通訊

    當(dāng)涉及到實(shí)現(xiàn)實(shí)時(shí)通信的Web應(yīng)用程序時(shí),兩種常見的技術(shù)選擇是服務(wù)器發(fā)送事件(Server-Sent Events,SSE)和WebSocket,本文將詳細(xì)講講這兩種技術(shù),并比較它們的異同點(diǎn)。 1.1 什么是SSE 服務(wù)器發(fā)送事件 SSE(Server-Sent Events)是一種基于HTTP的 單向通信機(jī)制 ,用于實(shí)現(xiàn) 服務(wù)器主動(dòng)向

    2024年02月14日
    瀏覽(24)
  • Springboot整合WebSocket實(shí)現(xiàn)主動(dòng)向前端推送消息

    Springboot整合WebSocket實(shí)現(xiàn)主動(dòng)向前端推送消息

    ? ? ? ? 在上篇文章tcp編程中,我們實(shí)現(xiàn)了C++客戶端與java服務(wù)器之間的通信,客戶端發(fā)送了一個(gè)消息給服務(wù)器,今天我們要實(shí)現(xiàn)基于WebSocket實(shí)現(xiàn)服務(wù)器主動(dòng)向前端推送消息,并且以服務(wù)器接收到C++客戶端的消息主動(dòng)向前端推送消息的觸發(fā)條件。 WebSocket 的誕生背景 ??????

    2024年03月16日
    瀏覽(23)
  • Python Flask 后端向前端推送信息——輪詢、SSE、WebSocket

    Python Flask 后端向前端推送信息——輪詢、SSE、WebSocket

    后端向前端推送信息,通知任務(wù)完成 輪詢 SSE WebSocket 請(qǐng)求方式 HTTP HTTP TCP長(zhǎng)連接 觸發(fā)方式 輪詢 事件 事件 優(yōu)點(diǎn) 實(shí)現(xiàn)簡(jiǎn)單易兼容 實(shí)現(xiàn)簡(jiǎn)單開發(fā)成本低 全雙工通信,開銷小,安全,可擴(kuò)展 缺點(diǎn) 消耗較大 不兼容IE 傳輸數(shù)據(jù)需二次解析,開發(fā)成本大 適用場(chǎng)景 服務(wù)端向客戶端單向

    2023年04月19日
    瀏覽(51)
  • 分布式websocket即時(shí)通信(IM)系統(tǒng)保證消息可靠性【第八期】

    分布式websocket即時(shí)通信(IM)系統(tǒng)保證消息可靠性【第八期】

    b站上面本期視頻版本,觀看視頻食用更佳!點(diǎn)擊即可跳轉(zhuǎn),找不到視頻可以直接搜索我 目前叫 呆呆呆呆夢(mèng) 目前已經(jīng)寫的文章有。并且有對(duì)應(yīng)視頻版本。 git項(xiàng)目地址 【IM即時(shí)通信系統(tǒng)(企聊聊)】點(diǎn)擊可跳轉(zhuǎn) sprinboot單體項(xiàng)目升級(jí)成springcloud項(xiàng)目 【第一期】 前端項(xiàng)目技術(shù)選型

    2024年01月22日
    瀏覽(22)
  • 詳解如何通過SSE實(shí)現(xiàn)Web站內(nèi)消息推送

    Web站內(nèi)消息推送主要是通過WebSocket技術(shù)實(shí)現(xiàn)的,但是在某些情況下,WebSocket并不是最好的選擇,比如在防火墻嚴(yán)格的環(huán)境下,WebSocket可能會(huì)被阻攔。 為了解決這個(gè)問題,我們可以使用SSE技術(shù)(Server-Sent Events)。 SSE是一種輕量級(jí)的服務(wù)器推送技術(shù),可以實(shí)現(xiàn)服務(wù)器向客戶端單

    2024年02月16日
    瀏覽(21)
  • Server side event (SSE)實(shí)現(xiàn)消息推送功能

    Server side event (SSE)實(shí)現(xiàn)消息推送功能

    ?在開發(fā)web項(xiàng)目時(shí),有一個(gè)需求是: 后端服務(wù)器 要 主動(dòng)地 、 不斷地 推送消息給 客戶端網(wǎng)頁(yè) 。要實(shí)現(xiàn)該需求,需要先考慮幾個(gè)常用的技術(shù)方案: 在客戶端網(wǎng)頁(yè)用 fetch 、 XmlHttpRequest 發(fā)送請(qǐng)求是 行不通 的,因?yàn)檫@類請(qǐng)求在后端返回一次數(shù)據(jù)之后就會(huì)中斷連接,導(dǎo)致后端無(wú)法

    2024年02月06日
    瀏覽(17)
  • 即時(shí)通訊:短輪詢、長(zhǎng)輪詢、SSE 和 WebSocket 間的區(qū)別

    在現(xiàn)代 Web 開發(fā)中,即時(shí)通訊已經(jīng)成為許多應(yīng)用程序的重要組成部分。為了實(shí)現(xiàn)即時(shí)通訊,開發(fā)人員通常使用不同的技術(shù)和協(xié)議。本文將介紹四種常見的即時(shí)通訊實(shí)現(xiàn)方法:短輪詢、長(zhǎng)輪詢、SSE(服務(wù)器發(fā)送事件)和 WebSocket,并探討它們之間的區(qū)別。 短輪詢是最簡(jiǎn)單的即時(shí)通

    2024年02月12日
    瀏覽(27)
  • 實(shí)時(shí)通信的服務(wù)器推送機(jī)制 EventSource(SSE) 簡(jiǎn)介,附 go 實(shí)現(xiàn)示例

    實(shí)時(shí)通信的服務(wù)器推送機(jī)制 EventSource(SSE) 簡(jiǎn)介,附 go 實(shí)現(xiàn)示例

    不知道大家有沒有見過 Content-Type:text/event-stream 的請(qǐng)求頭,這是 HTML5 中的 EventSource 是一項(xiàng)強(qiáng)大的 API ,通過服務(wù)器推送實(shí)現(xiàn)實(shí)時(shí)通信。 與 WebSocket 相比, EventSource 提供了一種簡(jiǎn)單而可靠的單向通信機(jī)制(服務(wù)器-客戶端),實(shí)現(xiàn)簡(jiǎn)單,適用于許多實(shí)時(shí)應(yīng)用場(chǎng)景。 本文將介紹

    2024年02月10日
    瀏覽(28)
  • SSE與WebSocket分別實(shí)現(xiàn)服務(wù)器發(fā)送消息通知(Golang、Gin)

    SSE與WebSocket分別實(shí)現(xiàn)服務(wù)器發(fā)送消息通知(Golang、Gin)

    服務(wù)端推送,也稱為消息推送或通知推送,是一種允許應(yīng)用服務(wù)器主動(dòng)將信息發(fā)送到客戶端的能力,為客戶端提供了實(shí)時(shí)的信息更新和通知,增強(qiáng)了用戶體驗(yàn)。 服務(wù)端推送的背景與需求主要基于以下幾個(gè)訴求: 實(shí)時(shí)通知:在很多情況下,用戶期望實(shí)時(shí)接收到應(yīng)用的通知,如

    2024年02月03日
    瀏覽(28)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包