用node.js和Websocket實現實時通信

說到websocket你們必定不會陌生,WebSocket是HTML5一種新的協議。它實現了瀏覽器與服務器全雙工通訊(full-duplex)。一開始的握手須要藉助HTTP請求完成,當瀏覽器和服務器握手成功後,瀏覽器和服務器之間就造成了一條快速通道。二者之間就直接能夠數據互相傳送。有了websocket, 你們就能夠摒棄以往用輪詢來實現實時通信的方式了。
有了websocket後,應運而生的相關產品也不在少數,選擇也成了最大的問題,在這裏你可能會說「幹嗎用別人的,我能夠本身用原始的開發一個啊」 對此我只想說你真NB,我也很想知道你是如何解決如下問題的:
1.        你是打算花1個月,2個月仍是1年還實現一個websocket通訊的?若是你說你打算花一個月,那說明兩點,你的技術要上天了(這麼刁的東西你能夠那麼快弄出來還不存在性能問題,除了我現有的膝蓋,請把我下輩子的膝蓋也拿走),貴公司土豪(貴公司對技術的炙熱追求已經達到了行業的巔峯了,看來大家的項目不是很緊嘛,預算挺多嘛,告訴我貴公司的名字我也來鑽研技術,哈哈哈)
2.        Websocket只支持ie10+, chrome, firefox, safari, opera. 不說多了,當前IE9及低版本的用戶羣體還有不少,你是怎麼以爲這些低版本瀏覽器的實時通信的?
上面兩個問題無非就是涉及到兩方面問題:開發成本和瀏覽器兼容性問題。站在管理者角度來看,都但願儘量多的壓縮開發成本,全部選擇第三方推送服務是衆多企業的一個理性選擇。
選擇產品時須要注意如下幾點:
1.        代碼結構是否清晰易懂
2.        消息到達率怎麼樣,數據到達狀況是否可視
3.        瀏覽器兼容性如何
4.        產品的穩定性和安全性
    
   node.js Websocket消息推送
 
好,重點來了,我不去評判其餘產品的優缺點,只給出我對我最終選擇的產品-GoEasy推送做一個單方面的評價。GoEasy推送知足我上面列的全部指標。
1.        代碼結構是否清晰易懂
GoEasy的代碼分爲訂閱和推送兩部分:
訂閱時,只須要三句代碼:
a.        引入goeasy.js (文件很是小)
<script type="text/javascript" src="http://cdn.goeasy.io/goeasy.js"></script>
b.        建立goeasy實例

var goEasy = new GoEasy({appkey: 'appkey'});javascript

c.        訂閱channel.

                     goEasy. subscribe({java

                 channel: 'channel1',node

                 onMessage: function(message){web

                              alert('Meessage received:'+message.content);//接收到推送的消息chrome

                           }api

                    });瀏覽器

推送時,用goeasy提供的restful api來實現,api只須要三個參數便可:安全

URL: http://goeasy.io/goeasy/publish服務器

Method: Postwebsocket

Parameters: appkey, channel, content

2.        消息到達率怎麼樣,數據到達狀況是否可視
咱們項目的用戶併發量目前最高在300人的樣子,天天會推送30條消息的樣子,每條消息的到達狀況均可以在goeasy後臺頁面進行查看。至於到達率,咱們項目的對到達率的要求是98%, 就目前來看GoEasy應該是100%的到達率。
3.        瀏覽器兼容性如何
除了經常使用的瀏覽器chrome, firefox, safari, opera外還支持IE 6到IE11的版本,低版本IE瀏覽器GoEasy採用的是polling的方式。GoEasy在兼容性這方面作的很不錯。
4.        產品的穩定性和安全性
穩定性的斷定:項目已經持續運行了4個月了,沒有出現過消息推不出或接收不到的狀況。
安全性的斷定:GoEasy在安全控制方面主要是經過appkey來控制,建立好app後系統會生成兩個key,一個既能夠用來接收又能夠用來推送,另外一個只能夠用來接收。因此用戶能夠選擇性的暴露你的key.
這樣輕鬆用node.js實現客戶端與服務器端的實時通訊了。
相關文章
相關標籤/搜索