前言
http的特點(diǎn)是一問一答,而即時(shí)通訊是需要雙向通信的,這樣以前的即時(shí)通信只能使用輪詢的方式通過周期性的ajax請求獲取數(shù)據(jù),直到websocket出現(xiàn),就完美實(shí)現(xiàn)了雙向通信
一 即時(shí)通訊方式簡介
段輪詢
前臺(tái)使用setInterval進(jìn)行定時(shí)請求后臺(tái),這樣無疑非常浪費(fèi)性能
長輪詢和長連接(html5的EventSource)
客服端連接一次,服務(wù)端不斷開連接,服務(wù)端接收到新消息就發(fā)送給前臺(tái),客服端和服務(wù)端保持一直連接,缺點(diǎn)是只有服務(wù)端向客服端輸出
websocket
websocket不再是走h(yuǎn)ttp協(xié)議,而是升級為websocket協(xié)議,說到底就是走應(yīng)用層協(xié)議(tcp),實(shí)現(xiàn)雙向通信,缺點(diǎn)是兼容性問題(ie11)
socket.io
上面的方式都存在一定問題,自然就有人封裝一套完美的解決方案,socket.io就是集合了上面幾種方案的另一種解決方案
二 即時(shí)通信實(shí)現(xiàn)
客服端
引入包:<script src="https://cdn.socket.io/socket.io-1.2.1.js";></script>
服務(wù)端和客服端通過on和emit進(jìn)行交互
// 建立連接 var socket= io('http://localhost:80') // on表示接收 // emit表示發(fā)送 socket.on('connect', function () { console.log('連接上了') // 登錄,同步前后端信息 // 請求后端login接口,寫入socketid socket.emit('login', { // 身份標(biāo)識(shí),可以是時(shí)間戳或者唯一id,最要用來回去socketid進(jìn)行私聊 id: username }) }) // 發(fā)送消息,這里可以用發(fā)送事件進(jìn)行消息發(fā)送 socket.emit('sendMsg', { newAccount: 'xxxxxx' }) // 接收消息 socket.on('msg1', function (data) { // 可以對數(shù)據(jù)進(jìn)行渲染 console.log(data) }) socket.on('allmessage', function (data) { // 接收所有人消息 console.log(data); }) // 表示連接斷開了 socket.on('disconnect', function () { console.log('聊天服務(wù)器斷開了') })
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。
本文名稱:koasocket即時(shí)通訊的示例代碼-創(chuàng)新互聯(lián)
文章來源:http://muchs.cn/article38/dsjcsp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供搜索引擎優(yōu)化、定制網(wǎng)站、網(wǎng)站設(shè)計(jì)、網(wǎng)站營銷、面包屑導(dǎo)航、App設(shè)計(jì)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容