主頁(yè) > 知識(shí)庫(kù) > ajax與websocket的區(qū)別以及websocket常用使用方式 介紹

ajax與websocket的區(qū)別以及websocket常用使用方式 介紹

熱門(mén)標(biāo)簽:大學(xué)校門(mén)地圖標(biāo)注 銷售電銷機(jī)器人詐騙 平?jīng)龈叩碌貓D標(biāo)注商戶要收費(fèi)嗎 提高電話機(jī)器人接通率 荊州智能電銷機(jī)器人 福建微碼電話機(jī)器人 廣西智能外呼系統(tǒng)多少錢(qián) 外呼系統(tǒng)api對(duì)接 地圖標(biāo)注與公司業(yè)務(wù)關(guān)系

筆者近期在公司的項(xiàng)目中漸漸的接觸了一些比較高級(jí)的業(yè)務(wù)邏輯處理,其中比較有意思的地方就是前端接受后臺(tái)給與的推送問(wèn)題。

一般前端與后端的交互主要是使用ajax進(jìn)行異步操作調(diào)用交互,比較有趣的是這種交互方式一般都是單項(xiàng)交互的--

-及前端給后端發(fā)出請(qǐng)求后端接受請(qǐng)求后執(zhí)行操作,即便前端可以接受后端給予的返回值,但是與后端交互的主動(dòng)權(quán)始終是放在前端手里面。

而這樣就會(huì)遇到兩個(gè)有意思的問(wèn)題--

1.前端如果調(diào)用的接口后端操作事件過(guò)長(zhǎng)可能會(huì)導(dǎo)致返回操作響應(yīng)時(shí)間過(guò)長(zhǎng),如果此時(shí)用戶單擊其他頁(yè)面的時(shí)候就會(huì)導(dǎo)致返回操作無(wú)法正常解決。

2.如果后端有什么比較重要的問(wèn)題需要推送給前端消息,這個(gè)時(shí)候前端是無(wú)法接收到的。

面對(duì)這兩個(gè)問(wèn)題的主流解決辦法分別為針對(duì)第一條我們會(huì)給整個(gè)頁(yè)面做一個(gè)加載中的動(dòng)畫(huà)并且鎖定住整個(gè)頁(yè)面從而強(qiáng)迫用戶等待到整個(gè)后端返回值結(jié)束后再將頁(yè)面解鎖。

而對(duì)于第二點(diǎn)我們就要引入我們今天所講的websocket這個(gè)概念。

一.什么是websocket

websocket協(xié)議在2008年誕生,2011年成為國(guó)際標(biāo)準(zhǔn)。所有瀏覽器都已經(jīng)支持了。

它的最大特點(diǎn)就是,服務(wù)器可以主動(dòng)向客戶端推送信息,客戶端也可以主動(dòng)向服務(wù)器發(fā)送信息,是真正的雙向平等對(duì)話,屬于服務(wù)器推送技術(shù)的一種。

而他與常規(guī)的ajax最大的不同在于他可以雙向接受和發(fā)送

一.websocket的簡(jiǎn)單使用

對(duì)于我們前端來(lái)說(shuō)websocket的使用方式非常簡(jiǎn)單,協(xié)議標(biāo)識(shí)符是ws(如果加密,則為wss),服務(wù)器網(wǎng)址就是 URL。我們只需要自己定義一個(gè)ws服務(wù)就可以了

代碼如下

var ws = new WebSocket("URL路徑");
ws.onopen = function(evt) { 
 console.log("打開(kāi)成功"); 
 ws.send("Hello WORD!");
};
ws.onmessage = function(evt) {
 console.log( "Received Message: " + evt.data);
 ws.close();
};
ws.onclose = function(evt) {
 console.log("服務(wù)關(guān)閉");
};  

如以上代碼所示我們成功的創(chuàng)建了一個(gè)簡(jiǎn)單的名字為WS的websocket服務(wù)并且想后臺(tái)定義的路徑中發(fā)送了一條hello word的簡(jiǎn)訊并且會(huì)在接收到推送的時(shí)候打印Received Message

在你的ws服務(wù)打開(kāi)以后會(huì)在前端的內(nèi)一直處于掛起狀態(tài),由于現(xiàn)在框架橫行,當(dāng)你的框架或者說(shuō)前端項(xiàng)目經(jīng)過(guò)node編譯或者運(yùn)行時(shí)候你可以把ws服務(wù)寫(xiě)在所有頁(yè)面的模板中就可以讓項(xiàng)目只要處于被打開(kāi)狀態(tài)就能一直運(yùn)行

這個(gè)時(shí)候你需要寫(xiě)接受推送消息即可,判斷后端給你推送消息的類型并且做出相應(yīng)的操作,完全不需要有ajax異步操作等待返回值或者返回值后自己操作時(shí)間太長(zhǎng)而讓用戶等待太久的煩惱。而這一技術(shù)現(xiàn)在也普遍的用在了

在線聊天室和一些需要接受推送提示的地方。

不過(guò)值得注意的是一般情況下如果推送量較為大的話公司會(huì)選擇一些比較大的云服務(wù)來(lái)做,比如筆者的公司就是使用的融云服務(wù)來(lái)做的,等筆者有空的話會(huì)專門(mén)開(kāi)一次坑講一講融云服務(wù)的教程

總結(jié)

以上所述是小編給大家介紹的ajax與websocket的區(qū)別以及websocket常用使用方式 介紹,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)歡迎給我留言,小編會(huì)及時(shí)回復(fù)大家的!

標(biāo)簽:婁底 邯鄲 海南 衡陽(yáng) 黔東 內(nèi)江 樂(lè)山 德陽(yáng)

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《ajax與websocket的區(qū)別以及websocket常用使用方式 介紹》,本文關(guān)鍵詞  ajax,與,websocket,的,區(qū)別,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《ajax與websocket的區(qū)別以及websocket常用使用方式 介紹》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于ajax與websocket的區(qū)別以及websocket常用使用方式 介紹的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章