溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

用PHP 和Websocket實(shí)現(xiàn)實(shí)時(shí)通訊---GoEasy

發(fā)布時(shí)間:2020-06-26 16:43:05 來(lái)源:網(wǎng)絡(luò) 閱讀:574 作者:愛魚的農(nóng)民 欄目:web開發(fā)
說(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í)消息推送


向AI問一下細(xì)節(jié)

免責(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)容。

AI