您好,登錄后才能下訂單哦!
說(shuō)到websocket大家一定不會(huì)陌生,WebSocket是HTML5一種新的協(xié)議。它實(shí)現(xiàn)了瀏覽器與服務(wù)器全雙工通信(full-duplex)。一開始的握手需要借助HTTP請(qǐng)求完成,當(dāng)瀏覽器和服務(wù)器握手成功后,瀏覽器和服務(wù)器之間就形成了一條快速通道。兩者之間就直接可以數(shù)據(jù)互相傳送。有了websocket, 大家就可以摒棄以往用輪詢來(lái)實(shí)現(xiàn)實(shí)時(shí)通訊的方式了。
有了websocket后,應(yīng)運(yùn)而生的相關(guān)產(chǎn)品也不在少數(shù),選擇也成了最大的問題,在這里你可能會(huì)說(shuō)“干嘛用別人的,我可以自己用原始的開發(fā)一個(gè)啊”對(duì)此我只想說(shuō)你真NB,我也很想知道你是如何解決以下問題的:
1. 你是打算花1個(gè)月,2個(gè)月還是1年還實(shí)現(xiàn)一個(gè)websocket通信的?如果你說(shuō)你打算花一個(gè)月,那說(shuō)明兩點(diǎn),你的技術(shù)要上天了(這么刁的東西你可以那么快弄出來(lái)還不存在性能問題,除了我現(xiàn)有的膝蓋,請(qǐng)把我下輩子的膝蓋也拿走),貴公司土豪(貴公司對(duì)技術(shù)的炙熱追求已經(jīng)達(dá)到了行業(yè)的巔峰了,看來(lái)你們的項(xiàng)目不是很緊嘛,預(yù)算挺多嘛,告訴我貴公司的名字我也來(lái)鉆研技術(shù),哈哈哈)
2. Websocket只支持ie10+, chrome, firefox, safari, opera. 不說(shuō)多了,當(dāng)前IE9及低版本的用戶群體還有很多,你是怎么覺得這些低版本瀏覽器的實(shí)時(shí)通訊的?
上面兩個(gè)問題無(wú)非就是涉及到兩方面問題:開發(fā)成本和瀏覽器兼容性問題。站在管理者角度來(lái)看,都希望盡可能多的壓縮開發(fā)成本,所有選擇第三方推送服務(wù)是眾多企業(yè)的一個(gè)理性選擇。
選擇產(chǎn)品時(shí)需要注意以下幾點(diǎn):
1. 代碼結(jié)構(gòu)是否清晰易懂
2. 消息到達(dá)率怎么樣,數(shù)據(jù)到達(dá)情況是否可視
3. 瀏覽器兼容性如何
4. 產(chǎn)品的穩(wěn)定性和安全性
好,重點(diǎn)來(lái)了,我不去評(píng)判其他產(chǎn)品的優(yōu)缺點(diǎn),只給出我對(duì)我最終選擇的產(chǎn)品-GoEasy推送作一個(gè)單方面的評(píng)價(jià)。GoEasy推送滿足我上面列的所有指標(biāo)。
1. 代碼結(jié)構(gòu)是否清晰易懂
GoEasy的代碼分為訂閱和推送兩部分:
訂閱時(shí),只需要三句代碼:
a. 引入goeasy.js (文件非常?。?/pre><script type="text/javascript" src="http://cdn.goeasy.io/goeasy.js"></script>b. 創(chuàng)建goeasy實(shí)例var goEasy = new GoEasy({appkey: 'appkey'});
c. 訂閱channel.goEasy.subscribe({
channel: 'channel1',
onMessage: function(message){
alert('Meessagereceived:'+message.content);//接收到推送的消息
}
});
推送時(shí),用goeasy提供的restful api來(lái)實(shí)現(xiàn),api只需要三個(gè)參數(shù)即可:
URL: http://goeasy.io/goeasy/publish
Method: Post
Parameters: appkey, channel, content
2. 消息到達(dá)率怎么樣,數(shù)據(jù)到達(dá)情況是否可視我們項(xiàng)目的用戶并發(fā)量目前最高在300人的樣子,每天會(huì)推送30條消息的樣子,每條消息的到達(dá)情況都可以在goeasy后臺(tái)頁(yè)面進(jìn)行查看。至于到達(dá)率,我們項(xiàng)目的對(duì)到達(dá)率的要求是98%,就目前來(lái)看GoEasy應(yīng)該是100%的到達(dá)率。3. 瀏覽器兼容性如何除了常用的瀏覽器chrome, firefox, safari, opera外還支持IE 6到IE11的版本,低版本IE瀏覽器GoEasy采用的是polling的方式。GoEasy在兼容性這方面做的很不錯(cuò)。4. 產(chǎn)品的穩(wěn)定性和安全性穩(wěn)定性的判定:項(xiàng)目已經(jīng)持續(xù)運(yùn)行了4個(gè)月了,沒有出現(xiàn)過(guò)消息推不出或接收不到的情況。安全性的判定:GoEasy在安全控制方面主要是通過(guò)appkey來(lái)控制,創(chuàng)建好app后系統(tǒng)會(huì)生成兩個(gè)key,一個(gè)既可以用來(lái)接收又可以用來(lái)推送,另一個(gè)只可以用來(lái)接收。所以用戶可以選擇性的暴露你的key.這樣輕松用PHP實(shí)現(xiàn)客戶端與服務(wù)器端的實(shí)時(shí)通信了。PHP websocket實(shí)時(shí)消息推送
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。